public class PraxisTest01
{
public static void main(String args[])
{
System.out.println("计算结果:"+sum(30));
}
public static double sum(int num)
{
if (num==1)
{
return 1;
}
else
{
return num*sum(num-1)+sum(num-1);
}
}
}
结论:这个是错误答案! num*sum(num-1)+sum(num-1)公式不正确!
列如 求1!+2!+3!应该=1+2+2*3
公式计算方式:=3*2*1+(2+1)+1 所以公式不正确,至于问什么30!能出结果 而60!出不了结果 大概因为60!可能设置的这个递归方法循环上还是有问题有问题!
注意: 以后编写程序避免这种多重的难以理解的公式
正解:
public class PraxisTest03
{
public static void main(String args[])
{
double y=0.0;
for (int x=1;x<=60 ;x++ )
{
y+=sum(x);
}
System.out.println(y);
}
public static double sum(int num)//定义sum()方法
{
if (num==1)
{
return 1;
}
return num*sum(num-1);
}
}
老师给出的正解:
public class PraxisTest03
{
public static void main(String args[])
{
System.out.println(jch(60));
}
public static double jch(int x)
{
if (x==1)
{
return jc(1);
}
return jc(x)+jc(x-1);
}
public static double jc(int num)
{
if (num==1)
{
return 1;
}
return num*jc(num-1);
}
}