麦卡锡91函数的c语言写法

大学c语言真的学不会了,有没有能人能教教我c语言怎么写麦卡锡91函数吗

搜索了下这个函数是这样的

img


本质上是一个递归问题,判断x的值来判断是否达到边界

#include <stdio.h>

int cul(int x) {
    if (x>100) {
        return x-10;
    } else {
        return cul(cul(x+11));
    }
}

int main() {
    int x = 101;
    printf("x=%d,res=%d\n",x, cul(x));
    return 0;
}


img

麦卡锡91函数是一个经典的递归函数,其定义如下:

img


其目的是将任意一个整数缩减到91以下。以下是麦卡锡91函数的C语言实现。

#include <stdio.h>

int mccarthy(int n) {
    if (n > 100) {
        // 如果n大于100,返回n-10
        return n - 10;
    } else {
        // 如果n小于等于100,返回f(f(n+11))
        return mccarthy(mccarthy(n + 11));
    }
}

按照下面的python版本,给你改成C语言的

#include <stdio.h>
int mccarthy91(int n) {
    int k = 1
    while (k) {
        if (n > 100) {
            n -= 10;
            k -= 1;
        }
        else {
            n += 11;
            k += 1;
        }
    return n;
}
 
int main() {
    printf("%d", mccarthy91(50));
return 0;
}

附原始程序

def mccarthy91(n):
    k = 1
    while k:
        if n > 100:
            n -= 10
            k -= 1
        else:
            n += 11
            k += 1
    return n
 
# 递归写法
def mccarthy91_rec(n):
    if n > 100:
        return n - 10
    else:
        return mccarthy91_rec(mccarthy91_rec(n + 11))
    
print(mccarthy91_rec(50))