斐波那契数列
1. 问题描述
斐波那契数列指的是这样一个数列:
1,1,2,3,5,8,13,21,34,65…
这个数列从第3项开始,每一项都等于前两项之和。
An = An-1 + An-2
现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39
2. 解题思路
方法1: 递推法
①:n = 0,n = 1是一个没有公式推导的值,所以,当n=0时,输出0,n = 1时,输出1
②:当n = 2时,n = n0 + n1,
③:所以,答案显而易见,需要一个中间变量,用来保存上一个斐波那契数,下一个斐波那契数 = 当前的斐波那契数+上一个斐波那契数
④:在写代码的时候注意,如果n不是unsigned 型,必须加上n>0,否则输入n = 负数,会导致错误
方法2: 递归法
3. c/c++源代码
递推法
class Solution {
public:
int Fibonacci(int n) {
int fibonacci_num = 1;
int fibonacci_num_prev_1 = 0;
int fibonacci_num_temp = 0;
if(n <= 0 || n >39)
return 0;
while(--n){
fibonacci_num_temp = fibonacci_num;
fibonacci_num += fibonacci_num_prev_1;
fibonacci_num_prev_1 = fibonacci_num_temp;
}
return fibonacci_num;
}
};
递归法
int Fibonacci(int n) {
if(n <= 0)
{
return 0;
}else if(n == 1)
{
return 1;
}else
{
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
4. 留言
CSDN:https://blog.csdn.net/qq_42714490
欢迎交流:
作者:有梦想的阿长
微信:hs835844948
【转载文章务必保留出处和署名,谢谢!】