递归计算实例(一):Collatz猜想

如果我们使用传统的循环进行,就会显得十分繁琐且可读性差,现在,就让我们利用递归函数来进行计算:

#include <stdio.h>  
  
int collatz(int n) {  
    if (n == 1) {  
        return 0;  
    } else if (n % 2 == 0) {  
        return 1 + collatz(n / 2);  
    } else {  
        return 1 + collatz(3 * n + 1);  
    }  
}  
  
int main() {  
    int n;    
    scanf("%d", &n);  
    int steps = collatz(n);  
    printf("%d\n",steps);  
    return 0;  
}

在这样一个递归下,我们使用递归函数来进行计算,如果是偶数,就将其除以二然后递归,如果是奇数,就将其3n+1再次递归。十分方便快捷有效。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务