TQC+ 402
題目說明:
請將檔案另存成JPA04.java,並編譯為JPA04.class
設計說明:
1.請寫一個程式持續輸入一個數n,使用遞迴計算n的階乘,直到n輸入的數值是999為止。
2.程式執行時,顯示[Input n(0<=n<=16):]要求輸入數值。
3.顯示如執行結果參考畫面。
- import java.util.Scanner;
- public class JPD04 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
-
- ...
- }
-
-
- ...
- }
複製代碼 【尾端遞迴的定義】
在電腦科學裡,尾呼叫是指一個函數裡的最後一個動作是一個函式呼叫的情形:即這個呼叫的返回值直接被當前函式返回的情形。這種情形下稱該呼叫位置為尾位置。若這個函式在尾位置呼叫本身(或是一個尾呼叫本身的其他函式等等),則稱這種情況為尾端遞迴,是遞迴的一種特殊情形。
尾呼叫的重要性在於它可以不在呼叫棧上面添加一個新的堆疊框—而是更新它,如同疊代一般。尾端遞迴因而具有兩個特徵:
1.呼叫自身函式(Self-called)
2.計算僅占用常量棧空間(Stack Space)
因此,形式上只要是最後一個return語句返回的是一個完整函式,它就是尾端遞迴。
TQC+ 404
題目說明:
請將檔案另存成JPA04.java,並編譯為JPA04.class
設計說明:
1.請寫一個程式持續輸入兩個數m、n,使用遞迴計算m與n的最大公因數,直到m輸入的數值是999為止。
2.程式執行時,顯示[Input m:]要求輸入m:輸入完畢,於下方顯示[Input n:]要求輸入n。
3.顯示如執行結果參考畫面。
- import java.util.Scanner;
- public class JPD04 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
-
- ...
- }
-
- ...
- }
複製代碼 TQC+ 406
題目說明:
請將檔案另存成JPA04.java,並編譯為JPA04.class
設計說明:
1.請使用遞迴撰寫一個類別方法,可計算一個字串內有幾個A,大小寫有所區別。
2.程式執行時,顯示[Input a string: ]要求輸入字串。
3.連續執行兩次,如執行結果參考畫面,顯示[輸入的字串 has X As]。將計算此字串內有幾個A,代入X中
- import java.util.Scanner;
- public class JPD04 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
-
- ...
- }
-
- public static int countA(String str) {
-
- ...
-
- }
- }
複製代碼 TQC+ 408
題目說明:
請將檔案另存成JPA04.java,並編譯為JPA04.class
設計說明:
1.請使用遞迴設計一個類別方法,此方法能夠將字串反向。
2.程式執行時,顯示[Input a string: ]要求輸入字串。
3.連續執行兩次,如執行結果參考畫面將字串反向印出。
- import java.util.Scanner;
- public class JPD04 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
- String s, c;
- System.out.print("Input a string: ");
- s = keyboard.nextLine();
- System.out.printf("%s\n", reverse(s));
- System.out.print("Input a string: ");
- s = keyboard.nextLine();
- System.out.printf("%s\n", reverse(s));
- }
-
- ...
- }
- /*
- reverse("hello")
- =reverse("ello")+"h"
- =reverse("llo")+"e"+"h"
- =reverse("lo")+"l"+"e"+"h"
- =reverse("o")+"l"+"l"+"e"+"h"
- =reverse("")+"o"+"l"+"l"+"e"+"h"
- =""+"o"+"l"+"l"+"e"+"h"
- ="olleh"
- */
複製代碼 TQC+ 410
題目說明:
請將檔案另存成JPA04.java,並編譯為JPA04.class
設計說明:
1.請使用遞迴設計一個類別方法,此方法能夠將一個字串內的某個字元換成另一個字元。例如輸入字串[windows],將字串中的w值替換成g值,輸出字串為[gindogs]。
2.程式執行時,顯示[Input a string: ]要求輸入字串,接續顯示[Input a character: ] 要求輸入[被替換]的字元,最後顯示[Input another character: ]要求輸入替換字元。
3.請利用replace()函數進行字串替換,顯示如執行結果參考畫面。
- import java.util.Scanner;
- public class JPD04 {
- static Scanner keyboard = new Scanner(System.in);
- public static void main(String args[]) {
- String s, c1, c2;
- System.out.print("Input a string: ");
- s = keyboard.nextLine();
- System.out.print("Input a character: ");
- c1 = keyboard.nextLine();
- System.out.print("Input another character: ");
- c2 = keyboard.nextLine();
- System.out.printf("%s\n", replace(s, c1, c2));
- }
-
- ...
- }
複製代碼 /*
replace("windows","w","g")
="g"+replace("indows","w","g")
="g"+"i"+replace("ndows","w","g")
="g"+"i"+"n"+replace("dows","w","g")
="g"+"i"+"n"+"d"+replace("ows","w","g")
="g"+"i"+"n"+"d"+"o"+replace("ws","w","g")
="g"+"i"+"n"+"d"+"o"+"g"+replace("s","w","g")
="g"+"i"+"n"+"d"+"o"+"g"+"s"+replace("","w","g")
="g"+"i"+"n"+"d"+"o"+"g"+"s"+""
=gindogs
*/ |