对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。例如,假定初始正整数为5,计算过程分别为16、8、4、2、1。要求定义和调用递归函数:guess(n),输出计算过程。 【输入】 输入一个正整数。 【输出】 从输入整数到1的步骤,每一步为一行,每一步中描述计算过程,最后一行输出“End”。如果输入为1,直接输出“End”。 【输入示例】 5 【输出示例】 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 End C语言
时间: 2024-02-13 10:07:41 浏览: 88
好的,下面是C语言实现递归函数guess(n)的代码及示例输出:
```c
#include <stdio.h>
void guess(int n) {
printf("%d\n", n);
if (n == 1) {
printf("End");
return;
}
if (n % 2 == 0) {
guess(n / 2);
} else {
guess(n * 3 + 1);
}
}
int main() {
int n;
scanf("%d", &n);
guess(n);
return 0;
}
```
输出结果:
```
5
16
8
4
2
1
End
```
递归函数guess(n)的思路和Python实现是一样的。先输出当前的n,如果n等于1则直接返回并输出"End",否则判断n是奇数还是偶数,执行相应的操作进行递归调用guess()函数。最终的输出结果就是从初始正整数开始,按照上述规则处理得到的所有数字。
相关问题
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要
这是一道关于规则的问题。所谓角谷猜想,是指对于任意一个正整数,若它是奇数,则将它乘以3再加1,若它是偶数,则将它除以2。得到的结果再重复上述操作,最终必定得到1。如果假定初始整数为5,则计算过程分别为16、8、4、2、1,共计算了4步。程序要实现这个规则的计算过程,最终能得到结果1。
对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。例如,假定初始正整数为5,计算过程分别为16、8、4、2、1。要求定义和调用递归函数:guess(n),输出计算过程。
好的,我明白了你的问题。下面是递归函数guess(n)的代码实现及示例输出:
```python
def guess(n):
print(n)
if n == 1:
return
if n % 2 == 0:
guess(n // 2)
else:
guess(n * 3 + 1)
guess(5)
```
输出结果:
```
5
16
8
4
2
1
```
递归函数guess(n)的思路是先输出当前的n,如果n等于1则直接返回,否则判断n是奇数还是偶数,执行相应的操作进行递归调用guess()函数。最终的输出结果就是从初始正整数开始,按照上述规则处理得到的所有数字。
阅读全文