递归计算实例(一):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再次递归。十分方便快捷有效。
