为什么乘法符号的阶乘符号变为加法符号会产生这样的输出?
Why does a change in multiplication sign in factorial to addition sign give such an output?
问题:为什么输出的是11而不是12?
i+4+i+3+i+2 = 1+4+1+3+1+2 = 12
代码:
def factorial(n):
i = 1
while n >= 1:
#I changed the signs from * to + after getting the factorial from * method.
i = i * n --> i = i + n
n = n - 1
return i
print factorial(4)
11
要获得预期的 i+4 + i+3 + i+2
和结果 12
,您需要
def factorial(n):
result = 0
i = 1
while n > 1:
result += i + n
n = n - 1
return result
print(factorial(4))
我添加到新变量 result
所以我不更改 i
,它一直是 1
。
我也使用 >
而不是 >=
所以它在 i+2
之后结束并且不添加 i+1
def factorial(n):
i = 1
while n >= 1:
#I changed the signs from * to + after getting the factorial from * method.
print(i)
i = i + n
n = n - 1
return i
print(factorial(4))
如果你打印i,你会发现在第一次循环后i已经改变了。
所以输出应该是 1+4+3+2+1=11
(代题作者发表).
我的解题技巧:1. 理解循环的概念 2. 尝试自己打印答案 - i=5, n=3, i=8, n=2, i=10 , n=1, i=11
问题:为什么输出的是11而不是12? i+4+i+3+i+2 = 1+4+1+3+1+2 = 12
代码:
def factorial(n):
i = 1
while n >= 1:
#I changed the signs from * to + after getting the factorial from * method.
i = i * n --> i = i + n
n = n - 1
return i
print factorial(4)
11
要获得预期的 i+4 + i+3 + i+2
和结果 12
,您需要
def factorial(n):
result = 0
i = 1
while n > 1:
result += i + n
n = n - 1
return result
print(factorial(4))
我添加到新变量 result
所以我不更改 i
,它一直是 1
。
我也使用 >
而不是 >=
所以它在 i+2
之后结束并且不添加 i+1
def factorial(n):
i = 1
while n >= 1:
#I changed the signs from * to + after getting the factorial from * method.
print(i)
i = i + n
n = n - 1
return i
print(factorial(4))
如果你打印i,你会发现在第一次循环后i已经改变了。 所以输出应该是 1+4+3+2+1=11
(代题作者发表).
我的解题技巧:1. 理解循环的概念 2. 尝试自己打印答案 - i=5, n=3, i=8, n=2, i=10 , n=1, i=11