害死人不偿命的(3n+1)猜想的C语言实现
常规方法:
#include<stdio.h>
//常规循环实现
int main()
{
int n;
scanf("%d",&n);
int count=0;
while(n!=1)
{
if(n%2==0){
n=n/2;
count++;
}else{
n=(n*3+1)/2;
count++;
}
}
printf("%d",count);
}
递归实现:
#include<stdio.h>
//递归实现
int Cal(int a ,int count)
{
if(a==1)
printf("%d",count);
else if(a%2==0){
count++;
a=a/2;
Cal(a,count);
;
}
else {
count++;
a=(3*a+1)/2;
Cal(a,count);
}
}
int main()
{
int a;
int n;
scanf("%d",&n);
int count=0;//计数
count=Cal(n,count);
return 0;
}
运行结果: