python - 如何解决阶乘过程中的while循环问题>
问题描述
我尝试用这些代码定义一个阶乘过程,但我得到的结果是 n^2,而不是 n*(n-1)*(n-2)...... 1. 似乎in 有仅在 i=n 时执行一次。我很困惑,有什么问题?
def factorial(n):
i = 1
while n >=i:
result = i * n
i = i + 1
return result
解决方案
您应该继续汇总操作result
:
def factorial(n):
result = 1
while n > 1:
result *= n
n -= 1
return result
这样factorial(4)
返回:24
推荐阅读
- r - R函数不明确的调用
- symfony - Symfony - JMS 序列化器 - 序列化时将日期时间转换为特定时区
- c++ - 为什么打印un_ordered map和map(dictionary)的key和value会出现异常?
- android - SQL(查询)错误或缺少数据库错误
- android - 尝试使用 onSaveInstanceState() 恢复 String[][] 时出现“java.lang.NullPointerException:尝试获取空数组的长度”
- apache-spark - 如何在终端上直接提交脚本而不是使用脚本文件?
- python - python:计算在字典中写入的状态所花费的时间
- ios - UITableViewCell 布局和约束何时最终确定?
- html - DIV 包含不同数量的 div,填充和覆盖剩余空间
- sql - SQL 多表语法