是否有不用global改变全局变量的办法?

来源:5-2 编程练习

weixin_慕慕0271488

2024-01-05 17:30:25

count=1
def Recursion(n):
 global count
 if n==0 or n==1:
  print(count,n)
  return 1 #退出机制,当满足条件以后就不执行下面的else
 

 else:count= count*n
 n-=1
 print(count,n)
 return Recursion(n)

Recursion(5)
print('总数:',count)

老师好,5-2  递归的练习代码如上,想请教:


1.是否有不用global改变全局变量count来实现任务的方法,不是说不建议在函数内用global改全局变量吗?


2. “第6行”我“退出机制”的注释正确吗


3.我尝试过将return 1改为 true、3、或其它值,都可以退出,是否意味着这个可以设为任意值?

写回答

1回答

好帮手慕小猿

2024-01-05

同学,你好!1、课程没有要求输出递归的次数,只要求输出最终的结果120。

https://img1.sycdn.imooc.com/climg/6597d9470989ca2c04610044.jpg

若同学只传一个参数n 的,想输出次数,那只能使用全局变量。若可传入两个参数,可以将count 也作为参数传入到函数中

(ncount):
    n == n == :
        (countn)
        :
        count *= n
        n -= (countn)
        Recursion(ncount)

count = Recursion(count)

同学可按提示的内容,返回阶乘 n*Recursion(n-1)。参考代码如下:

def Recursion(n):
    if n == 1 or n == 0:
        return 1
    else:
        return n * Recursion(n-1)
print(Recursion(5))

2、退出机制正确的

3、return  任意值都可以的。

祝学习愉快~

0

0 学习 · 4470 问题

查看课程