close

下班閒暇回顧一些簡單的程式運用,

三隻很常見的大一程式作業或上課範例,

因為解法不是只有這三種所以助教很喜歡出來當習題,

費氏數列可以練習用遞迴寫,

這裡就偷懶用了暴力解,

不過考試應該都會要求用遞迴解(畢竟是經典基礎考題)。

---------------------------------------------------------------------

import java.util.Scanner;

public class TestCase {
public static void main(String[] args){
/**
* Hello world
*/
// System.out.println("Hello world");

/**
* 輸入兩數算最大公因數
*/
// System.out.println("輸入兩數:");
// Scanner scanner = new Scanner(System.in);
// int x = scanner.nextInt();
// int y = scanner.nextInt();
// int tmp = 0;
// while(x % y != 0){
// tmp = y;
// y = x % y;
// x = tmp;
// }
// System.out.println(y);

/**
* 輸入兩數算最小公倍數
*/
// System.out.println("輸入兩數:");
// Scanner scanner = new Scanner(System.in);
// int x = scanner.nextInt();
// int y = scanner.nextInt();
// int tmp = 0, in1 = x, in2 = y;
// while(x % y != 0){
// tmp = y;
// y = x % y;
// x = tmp;
// }
// System.out.println(in1 * in2 / y);

/**
* 費氏數列,非遞迴解法
*/
System.out.println("輸入要計算的數列位置,EX: 輸入7,則計算f(7) = 1,1,2,3,5,8,13");
System.out.print("請輸入大於0的值:");
Scanner scanner = new Scanner(System.in);
int f = scanner.nextInt();
int f_1 = 1, f_2 = 1;
int tmp1 = 0, tmp2 = 2;

System.out.print("f(" + f + ") = ");
if(f == 1){
System.out.println(f_1);
System.out.println("加總\t:1");
}
else if(f == 2){
System.out.print(f_1 + " " + f_2);
System.out.println("加總\t:2");
}
else{
System.out.print(f_1 + " " + f_2 + " ");
for(int i = 0; i < f-2; i++){
tmp1 = f_1;
f_1 = f_2;
f_2 = tmp1 + f_2;
System.out.print(f_2 + " ");
tmp2 += f_2;
}
System.out.println();
System.out.println("加總\t:" + tmp2);
}
}
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 d32318 的頭像
    d32318

    d32318

    d32318 發表在 痞客邦 留言(0) 人氣()