由遞推公式求數列第n項的值/山理工ACM-1689斐波那契?
阿新 • • 發佈:2019-01-25
題引:
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;
}