Code
import java.util.*;
public class AlmostPerfect {
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
while(x.hasNext()) {
int n = x.nextInt();
int sum = recursion(n, n-1, 0);
if (sum == n) {
System.out.println(n + " perfect");
} else if ((n - sum) <= 2) {
System.out.println(n + " almost perfect");
} else {
System.out.println(n + " not perfect");
}
}
}
public static int recursion(int n, int x,int sum) {
if(x == 0){
return sum;
}
else if (n % x == 0) {
sum += x;
return recursion(n, x-1, sum);
}
else{
return recursion(n, x-1, sum);
}
}
}
I want to basically find what's wrong with my solution... There exists a solution for this, but I can't understand the memory limit exceeded property.
Problem link: https://open.kattis.com/problems/almostperfect