27函数---递归函数

函数的递归

函数调用自身的 编程技巧 称为递归

特点

  • 函数 内部 调用自己
    • 函数内部可以调用其他函数,当然在函数内部也可以调用自己

代码特点

  1. 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同
  2. 参数满足一个条件 时,函数不再执行
    • 这个非常重要,通常被称为递归的出口,否则 会出现死循环

示例代码:

函数调用本身

def f(x):
    if x > 1:
        y = 5 * x + 6
        # 函数作为返回值
        return y + f(x - 1)

    y = 5 * x + 6
    # return 关键字 返回一个内容
    return y


print(f(5))

斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的 方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N* 每一位数都等于前两位数之和,在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

  1. 定义一个函数 fib
  2. 能够接收一个 num 的整数参数
  3. 计算 1 + 1 + 2 + 3 + 5 + 8 ... num 的结果

第N个数是多少

def fib1():
    return 1

def fib2():
    return 1

def fib3():
    return fib1() + fib2()

def fib4():
    return fib3() + fib2()

def fib5():
    return fib4() + fib3()

print(fib5())


# 从第三个月开始算
def fib(x):
    if x == 2 or x == 1:
        return 1

    return fib(x-1) + fib(x-2)

print(fib(4))
def fic(n):
    if n == 1 or n == 2:
        return n
    elif n >= 3:
        return fic(n - 1) + fic(n - 2)
    else:
        return -1

print(fic(5))
Snipaste_2019-03-27_20-46-15.png

N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式?

def fic(n):
    if n == 1 or n == 2:
        return n
    elif n >= 3:
        return fic(n - 1) + fic(n - 2)
    else:
        return -1

print(fic(5))

提示:递归是一个 编程技巧,初次接触递归会感觉有些吃力!在处理 不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构

你可能感兴趣的:(27函数---递归函数)