編程題目:
54.求0—7所能組成的奇數個數。
示例代碼:
package program.calculation.exercise54;
import java.util.Scanner;
/**
* 54.求0—7所能組成的奇數個數。
*/
public class OddNumber {
public static void main(String[] args) {
System.out.println("請輸入數字個數:");
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println("第一種方式(累加):");
getOddNumber1(n);
System.out.println("第二種方式(遞歸):");
getOddNumber2(n);
}
// 第一種方式(累加)
private static void getOddNumber1(int n) {
int count = 0;
//組成奇數的阿拉伯數字的個數
//一位數
count = n/2;
//兩位數
count += (n-1)*n/2;
//三位數
count += (n-1)*n*n/2;
//四位數
count += (n-1)*n*n*n/2;
//五位數
count += (n-1)*n*n*n*n/2;
//六位數
count += (n-1)*n*n*n*n*n/2;
//七位數
count += (n-1)*n*n*n*n*n*n/2;
System.out.println("0-7所能組成的奇數個數:"+count);
}
//第二種方式(遞歸)
//獲取組成奇數的個數
private static void getOddNumber2(int n) {
int count = 0;
for(int i=1;i<n;i++){ //組成奇數的位數,奇數最多有7位
count += recurCount(i,n);
}
System.out.println("0-7所能組成的奇數個數:"+count);
}
//遞歸計算組成不同位數的奇數個數
private static int recurCount(int i,int n) {
if(1 == i){
return n/2;
}else if(2 == i){
return (n-1)*n/2;
}else{
return recurCount(i-1, n)*n;
}
}
}