以下是一個Java程式的實現,該程式由兩個類組成:HandShakes類和Demo類。HandShakes類包含一個靜態方法countHandShakes,該方法使用遞歸方式計算在一個房間內n個人全部互相握手一次的總握手次數。Demo類包含main方法,用於從用戶那裏接收房間內人數的輸入,調用countHandShakes方法,並輸出總握手次數。
HandShakes 類
java
Copy code
public class HandShakes {
// 靜態方法,使用遞歸計算總握手次數
public static int countHandShakes(int numPeople) {
if (numPeople <= 1) {
// 如果房間內人數小於等於1,則不可能發生握手
return 0;
} else {
// 否則,總握手次數等於當前人數減1(當前人與其他人握手)加上剩餘人數的握手次數
return (numPeople - 1) + countHandShakes(numPeople - 1);
}
}
}
Demo 類
java
Copy code
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入房間內的人數:");
int numPeople = scanner.nextInt();
// 調用HandShakes類中的countHandShakes方法計算總握手次數
int totalHandshakes = HandShakes.countHandShakes(numPeople);
// 輸出結果
System.out.println("總握手次數為:" + totalHandshakes);
}
}
這個程式的邏輯很簡單。countHandShakes方法採用遞歸方式來計算總握手次數。基本思想是,每個人都需要與房間內的其他所有人握手一次。因此,如果有n個人在房間裏,那麼第n個人就需要和其他n-1個人握手。接下來,問題就變成了計算剩下的n-1個人之間的握手次數,這就是遞歸發生的地方。
程式啟動時,Demo類的main方法會提示用戶輸入房間內的人數,然後調用HandShakes.countHandShakes方法計算並返回總握手次數,最後將結果輸出到控制臺。