1796 - Fibonacci数列

通过次数

0

提交次数

0

时间限制 : 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");
			}
		}
	}
}