函数递推式

简介: 函数递推式

函数递推式简单理解就是


函数+分支语句

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

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


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++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
编译器
位运算、递推与递归
位运算、递推与递归
50 0
|
人工智能
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
Leetcode53/152—最大子数组和/最大子数组乘积(状态转移方程/不熟)
116 0
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
122 0
074.K阶斐波那契序列
074.K阶斐波那契序列
66 0

热门文章

最新文章