【基础入门题】2021.12.07
角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3+1,如果是偶数,则除以2,得到的结果再按照上述规则中重复处理,最终总能得到1。
编制一个函数:从输入整数到1的步骤,每一步为一行,每一步都描述计算过程。最后一行输出End;如果输入为1,直接输出End。
编程语言:包括但不限于Python
题目来源:派森特给站每日刷题频道
————————————————
方法一:while循环
def guess(n):
while n>1:
if n%2:
if n!=1:
print(f'{n}*3+1->{n*3+1}')
n = n*3+1
else:
print(f'{n}//2->{n//2}')
n //= 2
else:
print('End')
return
guess(1)
guess(5)
guess(6)
guess(7)
guess(8)
方法二:递归法
def guess(n):
if n==1:
print('End')
return
if n%2:
if n!=1:
print(f'{n}*3+1->{n*3+1}')
guess(n*3+1)
else:
print(f'{n}//2->{n//2}')
guess(n//2)
guess(1)
guess(5)
guess(6)
guess(7)
guess(8)
两种方法的运行结果一致:
End
5*3+1->16
16//2->8
8//2->4
4//2->2
2//2->1
End
6//2->3
3*3+1->10
10//2->5
5*3+1->16
16//2->8
8//2->4
4//2->2
2//2->1
End
7*3+1->22
22//2->11
11*3+1->34
34//2->17
17*3+1->52
52//2->26
26//2->13
13*3+1->40
40//2->20
20//2->10
10//2->5
5*3+1->16
16//2->8
8//2->4
4//2->2
2//2->1
End
8//2->4
4//2->2
2//2->1
End
欢迎加入CSDN社区!
https://bbs.csdn.net/forums/PythonTogether?typeId=18060
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/boysoft2002/article/details/121839260
内容来源于网络,如有侵权,请联系作者删除!