1796 - Fibonacci数列
时间限制 : 1 秒
内存限制 : 128 MB
无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F(n)=1 ...........(n=1或n=2)
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)
题目输入
第一行是一个整数m(m<5)表示共有m组测试数据
每次测试数据只有一行,且只有一个整形数n(n<=20)
题目输出
对每组输入n,输出第n个Fibonacci数
输入/输出样例
输入格式
3 1 3 5
输出格式
1 2 5
C语言解答
#include <stdio.h> int fib(int n){ if(n<=2) return 1; return fib(n-1)+fib(n-2); } int main(){ int n, m; scanf("%d", &n); while(n--){ scanf("%d", &m); printf("%d\n", fib(m)); } return 0; }
C++解答
#include<iostream> using namespace std; int main(){ int m; cin>>m; while(m--){ int n,i,a[21]={0}; for(i=1;i<21;i++){ if(i==1 || i==2) a[i]=1; else a[i]=a[i-1]+a[i-2]; } cin>>n; cout<<a[n]<<endl; } }
Java解答
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int m=sc.nextInt(); while(m-->0) { int num1=1,num2=1,result=0; int n=sc.nextInt(); if(n>=3){ for(int Fib=3;Fib<=n;Fib++){ result=num1+num2; num2=num1; num1=result; } System.out.println(result); }else{ System.out.println("1"); } } } }