Python 用本原算子求N到K深度的阶乘
难以使用以下方法提出解决方案: 迭代/控制流和 积累 不只是一个解决方案,我更喜欢有提示和解释的答案Python 用本原算子求N到K深度的阶乘,python,while-loop,factorial,Python,While Loop,Factorial,难以使用以下方法提出解决方案: 迭代/控制流和 积累 不只是一个解决方案,我更喜欢有提示和解释的答案 def falling(n, k): """Compute the falling factorial of N to depth K. >>> falling(6, 3) # 6 * 5 * 4 120 >>> falling(4, 3) # 4 * 3 * 2 24 >
def falling(n, k):
"""Compute the falling factorial of N to depth K.
>>> falling(6, 3) # 6 * 5 * 4
120
>>> falling(4, 3) # 4 * 3 * 2
24
>>> falling(4, 1) # 4
4
>>> falling(4, 0)
1
"""
fact = n
i = 0
while i <= k:
fact = fact * fact - 1
i += 1
n -= 1
return fact
忽略k=0,您必须将k个数字相乘,以n开头,以n-k结尾。上面的循环是k次,因为我将从0开始递增1,你可以简单地从n中减去它,得到下一个要乘以的数字
编辑:通过提前返回确保k=0始终返回1
Edit2:删除内置范围函数
Edit3:确保深入k既然你不想要解决方案,而是想知道代码失败的原因,我会给你一些提示 逻辑是错误的,这就是原因 事实在每次迭代中都会更新,
仔细检查while条件i
def falling(n, k):
"""Compute the falling factorial of N to depth K.
>>> falling(6, 3) # 6 * 5 * 4
120
>>> falling(4, 3) # 4 * 3 * 2
24
>>> falling(4, 1) # 4
4
>>> falling(4, 0)
1
"""
if k == 0:
return 1
return_value = 1
counter = 0
while counter < k:
return_value = return_value * (n-counter)
counter += 1
return return_value