G-Bule 发表于 2022-10-25 17:02:26

求大佬解答

>>> # 写一个函数 求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 17:30:06

本帖最后由 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 无法被调用。

G-Bule 发表于 2022-10-25 21:19:26

我没明白,明明函数名加()就是调用,为什么一定要那个return
我把计算都放在参数里,只要能成功调用sum(n-1,result+n),就能实现递归,最后总要返回一个值的,可是什么都没有返回
页: [1]
查看完整版本: 求大佬解答