/*思路:由目标式子可见分为两个部分。一个为每一项求阶乘数,另外一个为求和。所以写两个方法就可以解决。*/
public class PracticeDemo {
//递归方法求每一位的阶乘,返回为该数的阶乘。从1开始
public static long Recursion(int a)
{
long value = 0;
if(1 == a )
{
value = 1;
}
else if(1 < a)
{
value = a * Recursion(a-1);
}
return value;
}
//阶乘求和从0到b的阶乘之和
public static long Summation(int b)
{
long Sum = 0;
if(0 > b)
{
return -1;
}
else
{
while(0 < b)
{
System.out.print(b+"!+");
Sum += Recursion(b);
b--;
}
System.out.print("0!=");
return Sum+1; //加上0的阶乘
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你要求的目标数:");
int a = input.nextInt();
PracticeDemo trf = new PracticeDemo();
System.out.println(trf.Summation(a));
}
}
原文:https://www.cnblogs.com/YangK123/p/12316441.html