songsinuo 发表于 2021-6-3 06:51:29

python阶乘

def fun(c):
    if c ==1:
      return 1
    else:
      return c *(c-1)
x=eval(input('输入一个数字c'))
print(x,'!=',fun(x))


def fun(c):
    if c ==1:
      return 1
    else:
      return c *fun(c-1)
x=eval(input('输入一个数字c'))
print(x,'!=',fun(x))


这两段代码运行结果一样
第五行加不加fun有什么区别或者意义吗

wp231957 发表于 2021-6-3 07:20:31

加上是递归,不加不是

qq1151985918 发表于 2021-6-3 07:30:20

这结果怎么会一样? 5 * (5 - 1) 跟 5 * fun(5 - 1)能一样?
第一个不是阶乘,是求x * (x - 1)
第二个才是阶乘,用的是递归方式

Twilight6 发表于 2021-6-3 08:22:01


第一个代码没递归,仅执行一次函数代码就结束了

第二个代码是递归,递归执行直到 if 条件满足递归开始返回

你拿两个值测试下也能明显从结果看出值的不同:

5的阶层为 120 ,而你第一个代码相当于 5 * 4 = 20 就结束返回,而第二个代码正确的返回了 120
页: [1]
查看完整版本: python阶乘