1. 程式人生 > >Fibonacci數列(找規律)

Fibonacci數列(找規律)

math println scanner line for each str BE java void

題目描述

Fibonacci數列是這樣定義的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci數列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci數列中的數我們稱為Fibonacci數。給你一個N,你想讓其變為一個Fibonacci數,每一步你可以把當前數字X變為X-1或者X+1,現在給你一個數N求最少需要多少步可以變為Fibonacci數。

輸入描述:

輸入為一個正整數N(1 ≤ N ≤ 1,000,000)

輸出描述:

輸出一個最小的步數變為Fibonacci數"
示例1

輸入

15

輸出

2
 1 import java.util.Scanner;
 2 
 3 /**
 4  * 
 5  * Fibonacci 數列
 6  * @author Dell
 7  *
 8  */
 9 public class Main {
10 
11 static public int  n = 15;
12 static public int x = 0;
13 static public int y = 1;
14 static public int step;
15 static public void f() {
16     while(y<n) {
17         int
i = y; 18 y = x+y; 19 x = i; 20 } 21 step = Math.min(Math.abs(x-n),Math.abs(y-n)); 22 } 23 public static void main(String[] args) { 24 25 Scanner sc =new Scanner(System.in); 26 n = Integer.parseInt(sc.nextLine().trim()); 27 f(); 28 System.out.println(step);
29 } 30 }



Fibonacci數列(找規律)