开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理:递归】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/601/detail/8732
递归
目录:
一 递归简介
二 递归的定义
三 递归式函数的两个要件
四 范例
五 练习
一·递归简介
递归是解决问题的一种方式,它和循环很像
它的整体思想是,将一全大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题。
二·递归的定义
递归式的函数
从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么故事呢?
从前有座山,山里有坐庙,庙里有个老和尚讲故事,讲的什么故事呢?递归简单理解就是自己去引用自己!
递归式函数,在函数中自己调用自己!
无穷递归,如果这个函数被调用,程序的内存会溢出,效果类似于死循环
def fn():
fn()
fn()
递归是解决问题的一种方式,它和循环很像
它的整体思想是,将一全大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题。
三·递归式函数的两个要件
1.基线条件
问题可以被分解为的般小问题,当满足基线条件时,递归就不在执行了
2.递归条件
将问题继续分解的条件
递归和循环类似,基本是可以互相代替的
循环编写起来比较容易,阅读起来稍难
10!=10*9!
9!=9*8!
8!=8*7!
...
1!=1
def factorial(n):
...
该函数用来求任意数的阶乘
参数:
n 要求阶乘的数字
...
基线条件 判断 n 是否为1,如果为 1 则此时不能再继续递归
if n ==1
1 的阶乘就是 1,直接返回 1
return 1
递归条件
return n*factorial(n 1)
print(factorial(10))
四、范例:
尝试求 10 的阶乘 (10!)
1!
=
1
2!=1*2
=
2
3!=1*2*3=
6
4!
=
1*2*3*4=24
print(1*2*3*4*5*6*7*8*9*10)
创建一个变量保存结果
n=10
for i in range(1,10)
n*= i
print(n)
创建一个函数,可以用来求任意数的阶乘
def factorial(n):
...
该函数用来求任意数的阶乘
参数:
n 要求阶乘的数字
...
创建一个变量保存结果
result
=
n
for i in range(1,10):
result
= i
r
esult
result
求 10 的阶乘
print(factorial(20))
五·练习
1.创建一个函数 power 来为任意数字做幂运算 n**i
2.创建一个函数,用来检查一个任意的字符串是否是回文 (字符串,如果是返回True,否则返回 False
回文字符串,字符串从前往后念和从后往前念是一样的
Abcba