【基础入门题】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