递归|学习笔记

简介: 快速学习 递归

开发者学堂课程【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

result result

求 10 的阶乘

print(factorial(20))

 

五·练习

1.创建一个函数 power 来为任意数字做幂运算 n**i

 

2.创建一个函数,用来检查一个任意的字符串是否是回文 (字符串,如果是返回True,否则返回 False

回文字符串,字符串从前往后念和从后往前念是一样的

Abcba

相关文章
|
5月前
|
算法 Java Serverless
【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题
【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题
111 0
|
11月前
|
JavaScript 前端开发
什么是递归?
什么是递归?
73 0
糊里糊涂的递归和递归经典题(下)
糊里糊涂的递归和递归经典题(下)
|
算法 C语言
糊里糊涂的递归和递归经典题(上)
糊里糊涂的递归和递归经典题
认识了解递归的原理,学会递归的运用
认识了解递归的原理,学会递归的运用
|
Java 数据安全/隐私保护 决策智能
字符串全排列(递归)
字符串全排列,递归的应用
137 0
|
机器学习/深度学习 BI
递归问题
递归问题
|
算法
【学习笔记之我要C】函数递归
【学习笔记之我要C】函数递归
54 0
|
算法 索引
第 6 章 递归
简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。
65 0
|
存储 Serverless 开发者
递归的理解与实现
递归的理解与实现
递归的理解与实现