题目:给一个数n(0<n<1000000),n遵循下面规律:
当n=1,n=1;
当n为偶数,n=n/2;
当n为奇数,n=3*n+1.
自定义一个函数Turn_to_one(int n),输入n,按上述规律最后转化为1.输出每次变化的值,并计算转换的次数。
解法1:
#include <stdio.h>
int Turn_to_one(int n)
{
int tixe=0;
if(n==1)
return tixe;
else
{
for(;n>1;tixe++)
{
if(n%2==0)
{
n=n/2;
printf("%d ",n);
}
else
{
n=3*n+1;
printf("%d ",n);
}
}
return tixe;
}
}
int main()
{
int n;
scanf("%d",&n);
printf("\n%d",Turn_to_one(n));
//write your code here
return 0;
}
解法2:
#include <stdio.h>
int Turn_to_one(int n)
{
if(n%2==0) n=n/2;
else n=3*n+1;
return n;
}
int main()
{
int tixe=0,n;
scanf("%d",&n);
while(n>1)
{
n=Turn_to_one(n);
printf("%d ",n);
tixe++;
}
printf("\n%d",tixe);
return 0;
}