斐波那契数列解法分析

这个数列从第3项开始,每一项都等于前两项之和。解法可以从递归、马尔科夫、最大值、位数、分治算法(O(log2n))、动态规划(O(n))等方面考虑。常见的面试考题有:兔子生兔子、青蛙跳楼梯、从0开始输入数求斐波那契数列的第n项。

#include<iostream>
using namespace std;
int F(int n)
{
	if(n<=0)
		return 0;
	if(n==1)
		return 1;
	int* ans = new int[n+1];
	ans[0] = 0;
	ans[1] = 1;
 
	for(int i=2; i<=n; i++)
		ans[i] = ans[i-1] + ans[i-2];
	
	int tmp = ans[n];
	delete[] ans;
	return tmp;
}
#一、从最大值考虑
numMax = int(input('please input  a maxnumber : '))
def flibsOne(numMax):
    c = []
    a, b = 0, 1
    while a < numMax:
        a, b = b, a + b
        c.append(a)
    c.remove(c[-1])
    print(c)
#二、从位数考虑
num = int(input('please input  a number : '))
def flibsTwo(num):
    list1 = []
    for i in range(num):
        if i <= 1:
            list1.append(1)
        eles:
        list1.append(list1[-2] + list1[-1])
    return list1
print(flisbTwo(num))  # 输出num位数列

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Time_traveler233/article/details/106793621