用递归方法计算斐波那契数列(Recursion Fibonacci Python)

先科普一下什么叫斐波那契数列,以下内容摘自百度百科:

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,指的是这样一个数列:1、1、2、3、5、8、13、21、34。。。这个数列从第3项开始,每一项都等于前两项之和。

根据以上定义,用python定义一个函数,用于计算斐波那契数列中第n项的数字是多少:

def fib_recur(n):    if n==0 or n==1 :         return n    else:        return (fib(n-1) + fib(n-2))  #每一项返回的结果都是前两项之和

调用这个函数试一下:

print(fib(5))

结果是:

5

如果要把到第n项的斐波那契数列都列出来,那么代码如下:

num=int(input("请问您需要列出几项斐波那契数列?"))if num<=0:    print("请输入正整数")else:    print("斐波那契数列:")    for i in range(num+1):        print(fib(i))

运行结果如下:

请问您需要列出几项斐波那契数列?5

斐波那契数列:
0
1
1
2
3
5

参考:麻省理工学院公开课:计算机科学及编程导论 (第4课)

附:不用递归方法计算出斐波那契数列

num=int(input("请问您需要列出几项斐波那契数列?"))#先定义第一项和第二项num1=1num2=1while num1<num+1:    print(num1)    num1,num2=num2,num1+num2 #把第二项的值赋予第一项,第三项的值赋予第二项,以此类推

运行结果如下:

请问您需要列出几项斐波那契数列?5
1
1
2
3
5

时间: 2024-10-21 19:21:12

用递归方法计算斐波那契数列(Recursion Fibonacci Python)的相关文章

以计算斐波那契数列为例说说动态规划算法(Dynamic Programming Algorithm Overlapping subproblems Optimal substructure Memoization Tabulation)

动态规划(Dynamic Programming)是求解决策过程(decision process)最优化的数学方法.它的名字和动态没有关系,是Richard Bellman为了唬人而取的. 动态规划主要用于解决包含重叠子问题的最优化问题,其基本策略是将原问题分解为相似的子问题,通过求解并保存重复子问题的解,然后逐步合并成为原问题的解.动态规划的关键是用记忆法储存重复问题的答案,避免重复求解,以空间换取时间. 用动态规划解决的经典问题有:最短路径(shortest path),0-1背包问题(K

计算斐波那契数列的性能对比:Python,Java,Go

??本文采用递归办法来计算斐波那契数列中的第38项,用于对于三种计算机语言的计算性能,这三种语言为:Python,Java,Go. ??我们采用递归法来求解斐波那契数列的第n项f(n),其算法描述如下: function fib(n) if n = 0 return 0 if n = 1 return 1 return fib(n ? 1) + fib(n ? 2) 对于公平起见,我们利用三种程序计算f(38),运行100遍,得到平均耗时,作为性能对比. ??Python程序如下: # -*-

用递归法计算斐波那契数列的第n项

   斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了<斐波纳契数列>季刊,专门刊载这方面的研究成果. [Fibonacci.cpp] #include<iostream>#

使用递归,计算斐波那契数列

使用递归,计算斐波那契数列 function fib(num) { if (num > 2) { return fib(num - 2) + fib(num - 1); } else { return 1; } } fib(6) 运行过程 1. return fib(4)+fib(5) 2.return fib(2)+fib(3)+fib(3)+fib(4) 3.return 1+fib(1)+fib(2)+fib(1)+fib(2)+fib(2)+fib(3) 4.return 1+1+1+1

SQL Server -&gt;&gt; 斐波那契数列(Fibonacci sequence)

斐波那契数列(Fibonacci sequence)的T-SQL实现 ;WITH T AS ( SELECT 1 AS NUM, CAST(1 AS BIGINT) AS curr, CAST(NULL AS BIGINT) AS prv UNION ALL SELECT curr.NUM + 1 AS NUM, CAST(CASE WHEN prv IS NULL THEN curr ELSE curr + prv END AS BIGINT) AS curr, CAST(curr AS BI

python3 求斐波那契数列(Fibonacci sequence)

输出斐波那契数列的前多少个数. 利用函数 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan # ----斐波那契数列(Fibonacci sequence)----- def check_num(number:str): ''' 对输入的字符串检查,正整数,返回Ture,否则返回False :param number: 输入的字符串 :return: 符合要求,返回Ture,不符合返回False ''' # 输入不

Python计算斐波那契数列

利用Python计算第一个达到一百万位数的斐波那契数列各位数之和 结果为4501552 以下是我用到的代码,不是中间需要一些人工操作来加快收敛性,有兴趣读者可以写代码加快收敛 首先执行这个,可以大致确定一百万个数所在斐波那契序列的位置 i=1 j=1 k=i+j count=3 while count<4850000: i=j j=k k=i+j count+=1 result=str(k) print('k长度') k_len=len(result) print(k_len) sum=0 fo

非递归方法实现斐波那契数列

//非递归方法实现,如下: #include "stdafx.h" #include <iostream> using namespace std; int main() { int F[100],num; F[0] = 0; F[1] = 1; for (int i = 2; i < 100; i++) { F[i] = F[i - 1] + F[i - 2]; } cout << "请输入你要显示的斐波那契数列的元素数:" <

递归方法实现斐波那契数列C++

//递归方法实现,如下: #include "stdafx.h" #include <iostream> using namespace std; void F(int num) { int *p = new int[num],i; p[0] = 0; p[1] = 1; for (i = 2; i < num; i++) { p[i] = p[i - 1] + p[i - 2]; } cout << endl; cout << "输