nettkd 发表于 2021-12-7 14:52:17

小白求助帖

def jiecheng(n):
    sum=1
    for i in range(1,n):
      sum=sum*i
      i+=1
      print(i)
      return sum
想请教各位前辈,为什么这个实现不了阶乘呢

wp231957 发表于 2021-12-7 14:56:29

returnsum   位置不对
for循环本身就自增,你为啥要画蛇添足

nettkd 发表于 2021-12-7 15:11:15

解决了,谢谢

nettkd 发表于 2021-12-7 15:12:34

wp231957 发表于 2021-12-7 14:56
returnsum   位置不对
for循环本身就自增,你为啥要画蛇添足

嗯嗯,最重要的是返回sum要在for循环的外面

luck78 发表于 2021-12-7 15:15:14

方法1
def fac(n):
    sum = 1
    for i in range(1,n+1):
      sum = sum * i
      print(i)
    return sum
print(fac(5))
方法2
def jiecheng(n):
    if n == 1 or n == 0:
      return 1
    else:
      return n * jiecheng(n-1)

你的问题1 return的位置不对
问题2 for i in range(1,n) 不对应该是 n+1 , 因为 比如jiecheng(5) 按你的方式循环起来就是,1,2,3,4
这样就少一次* 5, 最终答案就错了

nettkd 发表于 2021-12-7 15:42:15

luck78 发表于 2021-12-7 15:15
方法1

方法2


嗯嗯,要不怎么说是小白求助呢。刚好学完递归,要不然方法2看不懂
页: [1]
查看完整版本: 小白求助帖