其中两种方法
1、迭代法(循环)
#include <stdio.h> int main() { int n = 0; int count = 0;//步数 scanf("%d", &n);//输入 while (1 != n)//数据处理 { if (0 == n % 2)//为偶数时 { n /= 2; } else//为奇数时 { n = n * 3 + 1; } count++;//每循环一次步数加一 } printf("%d\n", count);//输出 return 0; }
2、递归法
#include <stdio.h> int count_step(int n) { if (1 != n) { if (0 == n % 2)//为偶数的情况 { return 1 + count_step(n / 2); } else//为奇数的情况 { return 1 + count_step(n * 3 + 1); } } return 0; } int main() { int n = 0; scanf("%d", &n);//输入 printf("%d\n", count_step(n));//数据处理并输出 return 0; }