递归函数练习——输出角谷猜想各个步骤

简介: /*===================================== 角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。
/*=====================================
角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。
如:输入22,
输出 22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1
     STEP=16

======================================*/
 1 #include<stdio.h>
 2 int step = 1;
 3 
 4 void fc(int n)//输出n这个数并按角谷猜想对n做处理以便进入下一步。返回值是总步数。 
 5 {
 6     if(n == 1)
 7     {
 8         printf("%d",n);
 9         return; 
10     }
11     else if(n%2 == 0)
12     {
13         printf("%d\t",n);
14         fc(n/2);
15         step++;
16     }
17     else
18     {
19         printf("%d\t",n);
20         fc(n*3+1);
21         step++;
22     }
23 }
24 
25 int main(int argc, char* argv[])
26 {
27     int n;
28     printf("Please input the num:");
29     scanf("%d",&n);
30     fc(n);
31     printf("\nStep = %d\n",step);
32     return 0;
33 }
View Code

 

相关文章
|
2月前
|
Arthas 监控 Java
-x [展开层数] 的详细用法和举例?
-x [展开层数] 的详细用法和举例?
35 5
|
2月前
使用 for 循环逆向输出数组
【10月更文挑战第29天】使用 for 循环逆向输出数组。
30 2
|
8月前
|
自然语言处理 算法 编译器
编译原理复习四:编译器结构 消除左递归、左公因子 最右推导 寻找句柄讲解(附题目和答案)
编译原理复习四:编译器结构 消除左递归、左公因子 最右推导 寻找句柄讲解(附题目和答案)
191 0
|
机器学习/深度学习 算法 测试技术
C++动态规划算法的应用:得到 K 个半回文串的最少修改次数 原理源码测试用例
C++动态规划算法的应用:得到 K 个半回文串的最少修改次数 原理源码测试用例
|
存储 算法
贪心算法(几种常规样例)
贪心算法(几种常规样例)
|
算法 C++
C++ 只用一行代码就能计算斐波那契数列!
C++ 只用一行代码就能计算斐波那契数列!
121 0
比较(用函数方法)打印100到200之间的单数,素数,并且请教各位读者,如何区别的不同
比较(用函数方法)打印100到200之间的单数,素数,并且请教各位读者,如何区别的不同
132 0
比较(用函数方法)打印100到200之间的单数,素数,并且请教各位读者,如何区别的不同