n是奇数时 n=3n-1
n是偶数时 n=n/2
重复进行上述两个过程 最终得到1
我写的程序只能输出第一个结果,求问怎么把每个结果都表示出来呢。
(举例:输入10时,我想输出10 5 16 8 4 2 1,我的程序只能输出5😢)
#include <stdio.h>
int f(int n)
{
if(n%2!=0)
return n*3-1;
else
return n/2;
}
int main()
{
int n;
if(!scanf("%d",&n))
{
printf("Input Error: not number");
return 0;
}
if(n<=1)
{
printf("Input Error: 1 or less");
}
if(n>1000)
{
printf("Input Error : 1001 or more");
}
while(n>1&&n<=1000)
{
printf("%d",f(n));
return 0;
}
}
#include <stdio.h>
int f(int n)
{
if (n>1){
printf("%d ", n);
n = n%2 ? n*3+1 : n/2;
return f(n);
}
else{
printf("1");
return 1;
}
}
int main()
{
int n;
if(!scanf("%d",&n))
printf("Input Error: not number");
else
if(n<=1||n>1000)
printf("Input Error: n must be between 1 and 1001");
else
f(n);
return 0;
}
f(n)最后·还是一个值,输出要在递归的函数中执行