我使用递归算法来计算 30 个完美数字,但只计算前 4 个,然后程序抛出错误。
public class PerfectNumbers {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
getPerfectNumbers(1,1);
}
static void getPerfectNumbers(long out,long number) {
long total = 0;
if(out==30) {
return;
}
for ( int i=1;i<number;i++) {
if(number%i==0) {
total+=i;
}
}
if(total==number) {
System.out.println("Perfect Number "+number);
out++;
}
number++;
getPerfectNumbers(out,number);
}
}
算法有什么问题?