1. 程式人生 > >Java中斐波那契數列相關面試題

Java中斐波那契數列相關面試題

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

題目描述1
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。n<=38

非遞迴實現方式:

	public static int fibonacci(int n) {
		int result = 0;
		int a1 = 0;
		int a2 = 1;
		if (n < 0 || n > 38) {
			System.out.println("please correct number");
			return -1;
		}
		if (n == 0) {
			return 0;
		} else if (n == 1) {
			return 1;
		} else {
			for (int i = 2; i <= n; i++) {
				result = a1 + a2;
				a1 = a2;
				a2 = result;
			}
		}
		return result;
	}
遞迴實現方式:
	static int result = 0;

	public static int fibonacciByRecursive(int n) {
		if (n == 0) {
			return 0;
		} else if (n == 1) {
			return 1;
		} else {
			result = fibonacciByRecursive(n - 1) + fibonacciByRecursive(n - 2);
		}
		return result;
	}
題目描述2
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。

先簡單推理分析下

n=1,solution =1

n=2,solution=2

n=3,solution=3

n=4,solution=5

f(n)=f(n-1)+f(n-2),和斐波那契數列 類似只是f(1)=1,f(2)=2,只需要把上面的稍微改動下即可

  public int JumpFloor(int target) {
        //f(n)=f(n-1)+f(n-2)
        int result = 0,a1 =1,a2=2;
        if(target ==1){
            return 1;
        }else if(target ==2){
            return 2;
        }else{
             for(int i=3;i<=target;i++){
                 result=a1+a2;
                 a1 =a2;
                 a2 =result;
                 
             }
            return result;
        } 
    }
遞迴解法類似,就不在貼程式碼了。

相關推薦

Java數列相關試題

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一

Java實現數列(遞迴、遍歷、矩陣)

什麼是斐波那契數列 其實很簡單,可以理解為: F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*) 比如這樣一個數列:1、1、2、3、5、8、13、21、34、…… 有興趣可以看百度百科 下面我們就來實現,給定一個n,求f(n)的值

java實現數列的三種方法

Java實現斐波那契數列的三種方法 什麼是斐波那契數列 這裡借用一下度孃的一段話:斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是

Java數列的三種寫法

說明:1,1,2,3,5,8,13,21,34,55,89......這樣是數列稱為斐波那契數列 1、利用遞迴思想處理 public static long method(int num){         if(num <=

java 優化數列

一、動態規劃、分治、遞迴的概念      動態規劃:如果大問題分解為很多小問題後,小問題有互相重疊部分,則用遞迴的思路來分析問題,再使用儲存中間結果+迴圈的思路來寫程式碼!動態規劃的三個特徵:適用於最優解問題、有大量的重複子問題、子問題之間有依賴(不獨立)      與遞

Java實現數列

public class Java02{ public static void main(String[] args){ int num = Integer.parseInt(args[0]); ///將string型別轉換為int型別

java數列 不死神兔

有一對兔子,從出生起後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子, 假如兔子都不死,問第二十個月的兔子對數為多少? 規律: 1,1,2,3,5,8,13... 規則:A.從第三個月開始,第一項是前兩項之和。 B.說明前兩項是已知的。 其實就是斐波那契數列,

Python數列的賦值邏輯

斐波那契數列   斐波那契數列又稱費氏數列,是數學家Leonardoda Fibonacci發現的。指的是0、1、1、2、3、5、8、13、21、34、······這樣的數列。即從0和1開始,第n項等於第n-1項與n-2項之和。需要注意的是0是第0項,而不是第一項。 用Python中簡單的賦值語句實現斐波

Python數列的賦值邏輯!

斐波那契數列 斐波那契數列又稱費氏數列,是數學家Leonardoda Fibonacci發現的。指的是0、1、1、2、3、5、8、13、21、34、······這樣的數列。即從0和1開始,第n項等於第n-1項與n-2項之和。需要注意的是0是第0項,而不是第一項。 用Python中簡單的賦值語

java實現數列,現在要求輸入一個整數n,請你輸出數列的第n項。 n

public class Solution_feibonaqi { public int Fibonacci(int n) { int result[] = { 0, 1 }; if (n < 2) { return result[n];

使用Java列印數列的三種方法

       斐波那契數列(Fibonacci sequence)的定義:斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,

Java實現數列並輸出前10000個數值

斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:0、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞迴的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n&

java數列

package com.wood.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test1 { public sta

Java數列前N項(堆疊演算法)

堆疊是一種很靈活的"後進先出"資料結構,使用堆疊可以節省記憶體的開銷。比如,遞迴是一種很消耗記憶體的演算法,可以藉助堆疊消除大部分遞迴,達到和遞迴演算法同樣的目的。 下面用例子實現求斐波那契數列前N項

如何用Java編寫數列

無窮數列1,1,2,3,5,8,13,21,34,55,……,稱為Fibonacci數列。它可以遞迴地定義為:   F(n)=1                                    n=0   F(n)=1                         

《劍指Offer》Java實現-數列

題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。 n<=39 思路 很基礎的題目,有遞迴和非遞迴兩種實現思路。 程式碼 遞迴演算法

python3數列演算法的實現方法

斐波那契數列的定義斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列

典型的動態規劃題目總結(數列相關

1.常規跳臺階 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 大體思路: 第 i 個樓梯可以從第 i-1 和 i-2 個樓梯再走一步到達,即走到第 i 個樓梯的方法數為走到第 i-1 和第 i-2 個樓梯的方法數之和。所以可以推匯出遞推

java的不死兔問題(數列)(遞歸思想)

sys nbsp public 錯誤 兔子 static class 月份 urn 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? public class Item { pu

Java的不死神兔(數列

三種方法實現例項: package test17_digui; import java.util.Scanner; /* * 題目:有一對兔子,從出生後第3個月起每個月都生1對兔子,小兔子第三個月後也可以生一對兔子, * 假如兔子不死,在指定月份時刻一共可以有多少對兔子 *