函数递推式简单理解就是
函数+分支语句
主要作用是方便我们的计算
在其中有两个特别重要的特征:
1、基例:不需要再次递推的方法
2、链条:需要进行多次递推的方法
例如:我们要把字符串反过来,没有学习递推式之前我们写的代码:
1. str1=input() 2. print(str1[::-1])
但我们要让字符串反过来的代码更加优秀、完美、在什么地方都可以调用,这个时候就需要使用函数递推式了,如下
def str_reverse(n): """功能:反转字符串 n:需要反转的字符串 """ if n=="": #递推基例 return n #当字符串为空时返回的是它本身 else: #递推链条 return str_reverse(n[1:])+n[0] print(str_reverse(input())) #调用函数递推式
这段代码的运行过程如下
输入 | 输出 |
n=你好 | 无 |
n=好 | 无 |
n=None | 好你 |
先是将“你”放在最后,然后把好带入函数中再执行一次
再例如,我们使用函数递推式解决n!
def factorial(n): """功能:计算数值的阶乘 n:需要阶乘的数 """ if n == 0: return 1 else: return n * factorial(n-1) print(factorial(int(input()))
比如我输入的是5
内部 | 返回 |
5*fact(4) | 120 |
4*fact(3) | 24 |
3*fact(2) | 6 |
2*fact(1) | 2 |
1*fact(0) | 1 |
函数递推式可以方便我们对函数体的多次利用,用最少行的代码完成更复杂的运算