输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出一个最小的步数变为Fibonacci数"
解题思路:找出一个最小的大于输入的N的斐波那契数,并在找的同时保存前一个斐波那契数。最后通过与N作差求出两者中最小的那个差数。
1 import java.util.Scanner; 2 3 public class Main{ 4 public static void main(String args[]){ 5 Scanner input = new Scanner(System.in); 6 int n = input.nextInt(); 7 int a = 0 , b = 1; //斐波那契数列F[0],F[1] 8 while(b < n){ //判断斐波那契数是否大于N 9 int temp = a + b; 10 a = b; //保存前一个斐波那契数 11 b = temp; 12 } 13 System.out.println(Math.min(n-a,b-n)); 14 } 15 }
原文:https://www.cnblogs.com/Thomas-Wang/p/10162296.html