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);
}
}