编程题目:
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;
}
}
}