首页 > 试题广场 >

Fibonacci

[编程题]Fibonacci
  • 热度指数:15997 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence:     F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2     Write a program to calculate the Fibonacci Numbers.

输入描述:
    Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。


输出描述:
   For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
示例1

输入

1

输出

1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] dp = new int[30];
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i < 30; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        int n = Integer.parseInt(br.readLine());
        System.out.println(dp[n]);
    }

}

发表于 2021-03-18 20:44:02 回复(0)
Java 解法,动态规划
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        //由于输入的n大小不确定,使用动态数组ArrayList
        ArrayList<Integer> dp = new ArrayList<>();
        dp.add(0);
        dp.add(1);
        for (int i = 2; i <= n; i++)
            // 状态转移方程: dp[n]=dp[n-1]+dp[n-2]
            dp.add(dp.get(i-1)+dp.get(i-2));
        System.out.println(dp.get(n));
    }
}


发表于 2020-03-06 10:31:43 回复(0)
//这里是从0开始的,主要使用的迭代的思想实现
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println(add(a));
    }
    
    public static int add(int n)
    {
        if(n == 1 || n==0)
            return n;
        else
            return add(n-1) + add(n-2);
    }
}

发表于 2018-05-26 20:22:04 回复(0)