函数递推式

简介: 函数递推式

函数递推式简单理解就是


函数+分支语句

主要作用是方便我们的计算

在其中有两个特别重要的特征:


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

函数递推式可以方便我们对函数体的多次利用,用最少行的代码完成更复杂的运算

目录
相关文章
|
8月前
|
C++
斐波那契数(C++)
斐波那契数(C++)
65 0
|
编译器
位运算、递推与递归
位运算、递推与递归
52 0
|
人工智能
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
117 0
|
算法
一元多项式相加问题(两种方法)
一元多项式的相加问题,主要运用了线性结构的合并,在合并线性结构的基础上,增加判断,所以我们可以将这个问题理解为一个复杂的线性表合并问题
272 0
一元多项式相加问题(两种方法)
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
107 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
斐波那契数
斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。
93 0
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
123 0