java 一个数等于几个数平方和
比如下面的代码。
12=2^2+2^2+2^2;
现在要求 param 和 num 都是控制台输入。输出所有结果。
应该用递归 不知怎么具体实现。
求教一下 么么哒~~~~(@^_^@)~
package com.niit.test;
import java.util.Scanner;
public class TestParamNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int param = 3;
int num = 12;
int nums[] = new int[param];
for(int i = 1;i<=param;i++)
{
//System.out.println("===1===");
for(int j = 1;j<=param;j++)
{
//System.out.println("===2===");
for(int h=1;h<=param;h++)
{
//System.out.println("===3===");
if(num==(i*i+j*j+h*h))
{
System.out.println(num+"="+i+"^2+"+j+"^2+"+h+"^2");
}
}
}
}
}
}
------解决思路----------------------
package hi;
public class SumPower2 {
public static void main(String[] args) {
int param = 2;
int num = 85;
System.out.println(num + "=" + getSumPower2(num,param));
}
public static String getSumPower2(int num,int param){
if(param ==1){
double a = Math.sqrt(num);
int b = (int)a;
if(a == b)
return String.valueOf(b)+"^2";
return "FALSE";
}
int i=1;
while(i<=Math.sqrt(num)){
String ret = getSumPower2(num - i*i,param-1);
if(!ret.equals("FALSE"))
return ret + "+" + i+"^2";
i++;
}
return "FALSE";
}
}