今天学习的问题是:递归是什么?

文章中的图片以及一些观点:来自小甲鱼python课程

什么是递归

 

图1

 

从一道题目开始入手:

                                      

 

图2

递归代码如下:

递归算法

def   factorial(n):

    if  n==1:

        return 1

    else :

        return n * factorial(n-1)

number = int(input(‘请输入一个正整数:’))

result = factorial(number)

print(‘%d的阶乘是:%d’%(number,result))

 

 

对于该程序的解释:

当n=5时,得到else 条件
 所以变成 5* factorial(4)

当n=4时,得到else条件
  变成4*factorial(3)

当n=3时,得到else条件
  变成3*factorial(2)

当n=2时,得到else条件,变成2*factorial(1)

直到n=1 factorial(1)返回1

所以2*factorial(1)变成2*1

3*factorial(2)变成3*2*1

4*factorial(3)变成4*3*2*1

5*factorial(4)变成5*4*3*2*1

 

所以外层为:

 

 

图3

 

注意点:

在使用递归中:1)有调用函数的过程  2)有正确的返回

否则,递归忘记返回,就会有危险,陷入死循环中,一直占用内存,其具有危险性。

上课(艾瑞上课的代码)

使用递归实现0到100求和

def fun3(s,i):

    return s if i==0 else fun3(s+i,i-1)

print(fun3(0,100))

解题思路,刚开始, s=0,i=100

判断i是否为0,如果不是,则s+i,为100,i变为99

第二次,s+i,变为100+99,i变为98

依次类推,最后s变为100+99+98+…….+0

最后判断i=0,返回s

 

版权声明:本文为fiano-1-1-1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fiano-1-1-1/p/12661284.html