求大佬解答
>>> # 写一个函数 求1+到n的值>>> def sum(n,result=0):
if n == 0:
return result
else:
return sum(n-1,result+n)
>>> sum(10)
55
>>> # 这样写是可以的
>>> def sum(n,result=0):
if n == 0:
print(result)
else:
sum(n-1,result+n)
>>> sum(10)
55
>>> #这样写也是可以的
>>> #但是
>>> def sum(n,result=0):
if n == 0:
return result
else:
sum(n-1,result+n)
>>> sum(10)
>>> #这样写,调用函数后不出来结果,为啥呢? 本帖最后由 jackz007 于 2022-10-25 18:00 编辑
def sum(n,result=0):
if n == 0:
return result
else:
sum(n-1,result+n) # 没有 return
一个有返回值的函数必须始终有 return,当然,return 什么值可以有选择,这个代码的问题就是选择性 return。
试试这个代码
def sum(n , result = 0):
if n == 0:
return result
else:
return sum(n - 1 , result + n)
print(sum(10))
递归函数 sum() 写得不是很好理解,这样写是不是更好一些?
def sum(n):
if n > 0:
retuen n + sum(n - 1)
else :
return 0
另外,sum() 是 Python BIF,自己起的函数名、变量名等标识符最好不要用这个名字,否则,会导致这个 BIF 无法被调用。 我没明白,明明函数名加()就是调用,为什么一定要那个return
我把计算都放在参数里,只要能成功调用sum(n-1,result+n),就能实现递归,最后总要返回一个值的,可是什么都没有返回
页:
[1]