小明偶然间发现一个奇妙的定律,任何一个自然数,如果是偶数,就除以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
时间: 2024-01-26 11:04:59 浏览: 187
以下是递归实现的代码,每次递归处理 n 的一步操作:
```
void F(int n) {
printf("%d ", n);
if (n == 1) {
return;
}
if (n % 2 == 0) {
F(n / 2);
} else {
F(n * 3 + 1);
}
}
```
阅读全文