6-2 奇妙的定律-递归
小明偶然间发现一个奇妙的定律,任何一个自然数,如果是偶数,就除以2,如果是奇数,就乘以3再加1。最后,经过若干次迭代得到1。也就是说,不管怎样迭代,不断除以2以后,最后是1。现在给你一个自然数n,求出它转变为1所经过的所有过程。
用递归函数实现。
函数接口定义:
void F(int n);
该函数输出由n变为1所经过的所有过程。用递归实现。
裁判测试程序样例:
#include <stdio.h> void F(int n); int main() { int n; scanf("%d", &n); F(n); return 0; } /* 请在这里填写答案 */
输入样例:
22
输出样例:
两个数之间空格隔开,最后一个数后面没有空格:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
void F(int n){
if(n!=1)
printf("%d ",n);
if(n==1){
printf ("1\n");
return 1;}
else if(n%2==0){
n=n/2;
//printf("%d ",n);
F(n);
}else if(n%2!=0){
n=n*3+1;
// printf("%d ",n);
F(n);
}
}