学渣观点:
1.递归实现不可取
def factorial(n):
if n > 1:
return n*factorial(n-1)
return 1
while True:
try:
n = input("请输入一个数字(输入 q 退出):")
if n == "q":
break
n = int(n)
if n < 1:
raise ValueError
x = factorial(n)
print(x)
except ValueError:
print("不是一个正数")
超过 1000 的阶乘计算后会报错:
RecursionError: maximum recursion depth exceeded in comparison
报错提示:超过最大递归深度。
解决办法:可以修改递归深度的值,让它变大大一点。
代码看起来很好,但是有个致命问题,你试试看 1000 的阶乘,记得一个经典例题 IBM 出 1000 的阶乘,都说很容易,但是考虑过这数据的存储吗?递归做这种大数字计算感觉不怎么行了。而且有更加简单且有效的方法,python 的特点应该是自带的数学公式。
2.示例代码,和下面用阶乘函数的代码,实际操作 70000 的阶乘计算速度才受到一些影响,肉眼感觉相差不大。
3.入门python感觉,python最大的优势还是在于自带的数学计算式,代码的简洁,大数的计算,因此学python应尽可能用数学公式来码代码。
学渣观点,有疑问接受反驳,QQ:1017736803
teachdark
teachdark
101***6803@qq.com2年前 (2019-05-10)