如果一题想了很久没思路,第二天再做效果比较好。还有递归可以从比较简单的情况开始考虑,然后简单情况结果正确后,发现整个算法是对的,哈哈
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while (n != 0)
{
System.out.println(calc(n, (int) Math.sqrt(n)));
n = sc.nextInt();
}
}
static int calc(int number, int maxFactor)
{
if (maxFactor == 1)
return 1;
int sum = 0;
sum += calc(number, maxFactor - 1);
while (number >= maxFactor * maxFactor)
{
number -= maxFactor * maxFactor;
sum += calc(number, maxFactor - 1);
}
return sum;
}
}