关于python教程第一版22讲的疑问
各位大神好, 小白有个小问题:22讲递归是神马的视频中,小甲鱼写了一个非递归的阶乘程序:
def factorial(n):
result = n
for i in range(1, n):
result *= i
return result
number = int(input('请输入一个正整数:'))
result = factorial(number)
print("%d 的阶乘是:%d" % (number, result))
这里面result = n是什么意思?做什么用的?
我自己的(献丑。。。):
def a(n):
b = 1
i = 1
while i in range(1,n):
i = i + 1
b *= i
print(b)
虽然是想用for,但是乘出来之后总是少一个阶乘。。。不知道为什么。。。
谢谢各位大神! def factorial(n):
tmp = n
for i in range(1, n):
tmp *= i
return tmp
没看到少。
>>> a(5)
120
>>>
================ RESTART: D:\Users\Administrator\Desktop\1.py ================
>>> factorial(5)
120
>>>
================ RESTART: D:\Users\Administrator\Desktop\1.py ================
>>> factorial(10)
3628800
>>> a(10)
3628800 1. result = n 是把 n 的值复制给 result。
2. 没有错误,一切正常。 ba21 发表于 2019-8-3 16:58
def factorial(n):
tmp = n
for i in range(1, n):
假设没有tmp = n这一行代码行不行?
我自己敲的时候没写这行,于是就少一个阶乘。。。 zltzlt 发表于 2019-8-3 17:03
1. result = n 是把 n 的值复制给 result。
2. 没有错误,一切正常。
就是。。。如果没有这一行,行不? 金克拉刺秦王 发表于 2019-8-3 17:08
就是。。。如果没有这一行,行不?
也可以,把后面的 result 替换成 n
页:
[1]