python - 使用原始运算符找到 N 到 K 深度的阶乘
问题描述
难以使用以下方法提出解决方案:
- 迭代/控制流和
- 积累。
不仅仅是一个解决方案,更希望有一个带有提示和解释的答案。
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
解决方案
因为您不想要解决方案,而是想要代码失败的原因,所以我会给您一些指示
逻辑错在这里是为什么
- 事实上每次迭代都会更新,
- 仔细检查 while 条件 i < k 或 i <= k?
推荐阅读
- c# - Botframework V4:即使其他对话框处于活动状态,活动对话框的 ID 也不会改变
- nsis - NSIS nsi 脚本错误:-!insertmacro:找不到名为“SECTION_BEGIN”的宏
- mysql - 显示最低价格,但也按日期和 sku 分组
- rest - Powershell WebRequest GET 成功但 DELETE 失败 w/404
- c# - 将列表附加到 XML
- r - 如何根据计数折叠因子的水平?
- java - YYYY-MM-DDThh:mm:ss string to age in java
- spring-boot - 将 spring-cloud-starter-sleuth 依赖项添加到 Spring-Boot App 一些 Rest Doc 测试失败
- oauth-2.0 - Aws Cognito Oauth2:刷新令牌轮换
- javascript - React 通过嵌套对象递归迭代