函数的递归
函数调用自身的 编程技巧 称为递归
特点
- 函数 内部 调用自己
- 函数内部可以调用其他函数,当然在函数内部也可以调用自己
代码特点
- 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同
- 当 参数满足一个条件 时,函数不再执行
- 这个非常重要,通常被称为递归的出口,否则 会出现死循环!
示例代码:
函数调用本身
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)* 每一位数都等于前两位数之和,在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
- 定义一个函数
fib
- 能够接收一个
num
的整数参数 - 计算 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))
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))
提示:递归是一个 编程技巧,初次接触递归会感觉有些吃力!在处理 不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构