递归的练习| 学习笔记

简介: 快速学习递归的练习

开发者学堂课程Python入门 2020年版递归的练习】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10339


递归的练习


内容介绍

一、#使用递归求n!

二、#使用递归求斐波那契数列的第n个数字


一、#使用递归求n!

使用递归求n!和求和差不都,就是从第一个数的阶乘开始乘到最后一个数的阶乘,n!=n*(n-1)!

def factorial(n):

return n * factorial(n - 1)

会有一个问题,从第一个阶乘开始一直乘,就停不下来,如果想要它停下来,

If n ==0:

Return 1

0=1 1=0x1!print(factorial(6)#6*factorial(5)===>6*5*factorial(4)==>6*5*4*3*2*1*1

运行结果:720

大家会发现循环也不算难,核心思想就是下一个数等于之前两个数的和,这个地方使用递归就更加简单。


二、#使用递归求斐波那契数列的第n个数字

#11235813213455144

def fibonacci(n):

if n==6:return 8

if n==7,return 13

return fibonacci(n-2) + fibonacci(n-1)

斐波那契里面第n个数等于第n-1个数加上n-2个数,

F(8)=f(6)+f(7)

如果f(6)f(7)都知道就可以计算出f(8)

8+13==>21

这样有个小问题,只能计算6以上,7以上的斐波那契数列,

def fibonacci(n):

if n==2:return 1

return fibonacci(n-2) + fibonacci(n-1)

F(8)=f(6)+f(7)

= f(4)+ f(5) + f(5) + f(6)

= f(2)+f(3)+ f(4)+f(3)+ f(4)+f(3)+ f(4)+f(5)

= f(0)+f(1)

没有第零个数,所以2就不应该拆了=1+1+f(1)+f(2)+f(3)+f(2)+f(1)+f(2)+f(3)+f(2)+f(1)+f(2)+f(3)+f(4)+f(3)

=1+1+1+1+f(3)+1+1+1+f(3)+1+1+1+f(3)+f(4)+f(3)

最终拆完的结果是211相加,

最后再加一个返回区间

def fibonacci(n):

if n==2 or n ==1:return 1

return fibonacci(n-2) + fibonacci(n-1)

print(Fibonacci(8))

运行结果:21

print(Fibonacci(9))

运行结果:44

相关文章
|
7月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
8月前
|
Java Python
汉诺塔递归问题,递归思路详解
汉诺塔递归问题,递归思路详解
122 0
|
算法 C语言
糊里糊涂的递归和递归经典题(上)
糊里糊涂的递归和递归经典题
糊里糊涂的递归和递归经典题(下)
糊里糊涂的递归和递归经典题(下)
认识了解递归的原理,学会递归的运用
认识了解递归的原理,学会递归的运用
|
机器学习/深度学习 BI
递归问题
递归问题
|
算法
【学习笔记之我要C】函数递归
【学习笔记之我要C】函数递归
64 0
|
算法 程序员 C语言
递归|学习笔记
快速学习递归
递归|学习笔记
|
机器学习/深度学习
简单的了解一下递归
在编程中,递归大家肯定都不陌生了吧,今天我们来总结总结有关于递归的东西。