java递归算法求 完美数
时间: 2024-01-23 13:43:24 浏览: 36
完美数是指一个数恰好等于它的因子之和,不包括它本身。例如,6是完美数,因为6的因子为1、2、3,而1+2+3=6。
下面是java递归算法求完美数的代码实现:
```java
public static boolean isPerfectNum(int num) {
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum == num;
}
public static void printPerfectNum(int n) {
if (n <= 0) {
return;
}
printPerfectNum(n - 1);
if (isPerfectNum(n)) {
System.out.print(n + " ");
}
}
public static void main(String[] args) {
printPerfectNum(10000);
}
```
在这个代码中,我们定义了两个方法 `isPerfectNum` 和 `printPerfectNum`。
`isPerfectNum` 方法用来判断一个数是否为完美数,它会遍历该数的所有因子,然后将这些因子之和与该数进行比较,如果相等则说明该数是完美数。
`printPerfectNum` 方法则是用来输出一定范围内的所有完美数,它采用递归的方式,从最大值开始递减,如果当前值为完美数,则输出该数。
最后,在主函数中调用 `printPerfectNum` 方法,传入一个较大的数值,就可以输出该数值范围内的所有完美数了。