python 两个小练习理解递归函数
程序员文章站
2022-06-06 15:16:51
递归是解决问题的一种方式,它和循环很像它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题递归式函数的两个要件1.基线条件问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了2.递归条件将问题继续分解的条件递归和循环类似,基本是可以互相代替的,循环编写起来比较容易,阅读起来稍难递归编写起来难,但是方便阅读例题:编写求n!的递归函数分析:n!等于1 * 2 * … * (n-1) * nn!也等于n * (n-1)!比如:10!...
递归是解决问题的一种方式,它和循环很像
它的整体思想是,将一个大问题分解为一个个的小问题,直到问题无法分解时,再去解决问题
递归式函数的两个要件
1.基线条件
- 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
2.递归条件
- 将问题继续分解的条件
递归和循环类似,基本是可以互相代替的,
循环编写起来比较容易,阅读起来稍难
递归编写起来难,但是方便阅读
例题:编写求n!的递归函数
分析:
n!等于1 * 2 * … * (n-1) * n
n!也等于n * (n-1)!
比如:
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))
练习一:创建一个函数 power 来为任意数字做幂运算 n ** i
分析:
n**i = n * (n ** (i-1))
比如:10 ** 5
10 ** 5 = 10 * 10 ** 4
10 ** 4 = 10 * 10 ** 3
…
10 ** 1 = 10
代码:
def power(n , i):
'''
power()用来为任意的数字做幂运算
参数:
n 要做幂运算的数字
i 做幂运算的次数
'''
# 基线条件
if i == 1:
# 求1次幂
return n
# 递归条件
return n * power(n , i-1)
print(power(10,5))
练习二:创建一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,否则返回False
回文字符串,字符串从前往后念和从后往前念是一样的
例如:
abcba
abcdefgfedcba
先检查第一个字符和最后一个字符是否一致,如果不一致则不是回文字符串
如果一致,则看剩余的部分是否是回文字符串
检查 abcdefgfedcba 是不是回文
检查 bcdefgfedcb 是不是回文
检查 cdefgfedc 是不是回文
检查 defgfed 是不是回文
检查 efgfe 是不是回文
检查 fgf 是不是回文
检查 g 是不是回文
代码:
def hui_wen(s):
'''
该函数用来检查指定的字符串是否回文字符串,如果是返回True,否则返回False
参数:
s:就是要检查的字符串
'''
# 基线条件
if len(s) < 2 :
# 字符串的长度小于2,则字符串一定是回文
return True
elif s[0] != s[-1]:
# 第一个字符和最后一个字符不相等,不是回文字符串
return False
# 递归条件
return hui_wen(s[1:-1])
print(hui_wen('abcdefgfedcba'))
本文地址:https://blog.csdn.net/qq_41657977/article/details/107569634
上一篇: Ubuntu下安装Docker教程
推荐阅读
-
python 两个小练习理解递归函数
-
Python小练习 - 用递归将十进制转化为二进制
-
python3 时间模块 random模块之两个小练习
-
Python基础学习之深浅拷贝问题及递归函数练习
-
python 两个小练习理解递归函数
-
python小代码(练习--将字符串保存至两个列表)
-
2018/8/23(python学习之关于递归函数的理解于,,输出某个月的日历,,路边停车,,汉诺塔)
-
python 练习题:定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程ax^2+bx+c=0的两个解
-
python3 时间模块 random模块之两个小练习
-
Python基础学习之深浅拷贝问题及递归函数练习