函数递推式

简介: 函数递推式

函数递推式简单理解就是


函数+分支语句

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

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


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

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

目录
相关文章
|
5月前
|
算法 C语言
汉诺塔问题(函数递归)
汉诺塔问题(函数递归)
50 0
|
机器学习/深度学习
求n的阶乘(递归法和循环法
根据阶乘的计算方法:n!= 1 * 2 * 3*…*n,我们在一个for循环完成 n 次乘法运算。注意因为是连乘,最终阶乘结果可能会非常大所以我们在Fac函数中用 long long 类型的变量来记录阶乘的结果。
|
C++ C语言
你是真的“C”——函数递归详解汉诺塔
利用函数递归手把手求解汉诺塔
108 0
你是真的“C”——函数递归详解汉诺塔
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
100 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
113 0
|
机器学习/深度学习 人工智能 移动开发
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
206 0
|
机器学习/深度学习 Windows
【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )
【组合数学】递推方程 ( 递推方程示例 2 汉诺塔 | 递推方程示例 3 插入排序 )
140 0