题引:
Problem Description
给出一个数列的递推公式,希望你能计算出该数列的第N个数。递推公式如下:
F(n)=F(n-1)+F(n-2)-F(n-3). 其中,F(1)=2, F(2)=3, F(3)=5.
很熟悉吧,可它貌似真的不是斐波那契数列呢,你能计算出来吗?
Input
输入只有一个正整数N(N>=4).
Output
输出只有一个整数F(N).
Example Input
5
Example Output
8
这种类型是ACM常见类型,由递推公式求n值,最典型例子为斐波那契数列
本题答案:
#include<stdio.h>
int fib(int n){
if(n==1)
return 2;
if(n==2)
return 3;
if(n==3)
return 5;
if(n>3)
return fib(n-1)+fib(n-2)-fib(n-3);
}
int main(){
int n;
scanf("%d",&n);
printf("%d\n",fib(n));
return 0;
}
同样,斐波那契数列第n项的值,也可用递推公式求知,如下:
#include<stdio.h>
int fib(int n){
if(n==1||n==2)
return 1;
if(n==3)
return 2;
if(n>3)
return fib(n-1)+fib(n-2);
}
int main(){
int n;
scanf("%d",&n);
printf("%d\n",fib(n));
return 0;
}