/*
这实在没什么好敲的。这里主要讲的几个问题
第一个 面试时如果没有特殊要求 就递归
第二 非波那且 循环不用开数组 只要记录前两个就行了。
其实也不是完全没价值 如果让我 我就开数组了。开尼馬数组干蛋啊 只球fn
还有这里有个题目 挺有意思。。。都是和非波那且有关系的
1
青蛙每次可以跳一个台阶 或者两个 问到第n台阶多少种方法 这个早就知道 就是非波那且的fn
2
如果青蛙每次可以跳任意多个 一共多少中方法 这个也推一下就可以了 是二的n-1次方
3
如果有 一个 长条两个1*1的小方格组成的。
然后有 一个 8*2 的大矩形
问用这中小的组成大的 多少中方法
也是简单的推一下 如果第一个小的 竖着放 就是f(7)
如果横着放
肯定还得横着放一个
所以是f(6)
还有非波那且有O(logn)的算法 就是不常用
大概就是一个矩阵的 n-1 次方后 最左上角的哪个就是
*/
#include<iostream>
#include<cstdio>
using namespace std;
int fibonaci(int n)
{
int res[2]={0,1};
if(n<2)
return res[n];
int num1=0;
int num2=1;
int ans;
for(int i=2;i<=n;++i)
{
ans=num1+num2;
num1=num2;
num2=ans;
}
return ans;
}
int main()
{
int n;
while(cin>>n)
{
cout<<fibonaci(n)<<endl;
}
return 0;
}
剑指offer 面试题9 递归 非波那且数列
最新推荐文章于 2019-06-11 10:56:29 发布