求助!!3n+1 问题怎么做?
题目:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1.例如:3—》10—》5—》16—》8—》4—》2—》1.
输入n,输出变换的次数。n<=10^9(10的9次方)。
样例输入:3
样例输出:7
root@~ #cat 1.c #include <stdio.h> int main (void) { int n,m=0; scanf("%i",&n); do { if(n%2==0) { n/=2;printf ("%i ",n); }else{ n=3*n+1; printf ("%i ",n); } m++; }while(n!=1); printf ("\nChange counts is=%i\n",m); return 0; } root@~ #./1 3 10 5 16 8 4 2 1 Change counts is=7 root@~ #./1 5 16 8 4 2 1 Change counts is=5 root@~ #