Fibonacci數列、機器人走方格

1.標題:Fibonacci數列

public class Test13 {
    private static int Solution(int num){
        int a = 0;
        int index = 0;
        int result = 0;
        for(int i = 1;Fab(i)<num;i++){
            a = Fab(i);
            index++;
        }
        int b = Fab(index+1);
        if(num==b){
            return 0;
        }else {
            result = Math.min(num-a,b-num);
        }
        return result;
    }
    private static int Fab(int num){
        if(num==1||num==2){
            return 1;
        }
        return Fab(num-1)+Fab(num-2);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int result = Solution(num);
        System.out.println(result);
    }
}
//方法二:
import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        int n = 0;
        int a = 0, b = 1, c = 1;
        if (scanner.hasNextInt()) {
            n = scanner.nextInt();
        }
        while (c < n) {
            a = b;
            b = c;
            c = a + b;
        }
        int dis1 = n - b;
        int dis2 = c - n;
        System.out.println(dis1 < dis2 ? dis1 : dis2);
    }
}

2.標題:機器人走方格I
有一個XxY的網格,一個機器人只能走格點且只能向右或向下走,要從左上角走到右下角。請設計一個算法,計算機器人有多少種走法。
給定兩個正整數int x,int y,請返回機器人的走法數目。保證x+y小於等於12。
測試樣例:
2,2
返回:2

//方格子問題
public class Robot {
    public int countWays(int x, int y) {
        if (x == 1 || y == 1) return 1;
        return countWays(x - 1, y) + countWays(x, y - 1);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章