1. 程式人生 > >由遞推公式求數列第n項的值/山理工ACM-1689斐波那契?

由遞推公式求數列第n項的值/山理工ACM-1689斐波那契?

題引:

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;
}