请编写程序。要求分别采用递归方法和非递归方法计算n的阶乘:n!=n*(n-1)*...*1,其中,n为大于0的整数。要求在控制台窗口中分别输出采用这两种方法计算从1到10的阶乘结果。
递归方法
/*
* 请编写程序,要求程序用递归算法计算n的阶乘
* n!=n*(n-1)*...*1,期中,n为大于0的整数。
* 要求在控制台窗口输出从1到10的阶乘结果。
*/
package l_recursion;
/**
*
* @author lonely
*/
public class L_Recursion {
public static int sq_recursion(int i)//递归算法求阶乘
{
if(i<=0)return (0);//小于等于0的情况不计算
if(i==1)
return (1);
return (i*sq_recursion(i-1));
}//sq_recursion结束
public static void main(String[] args) {
for(int i=1;i<=10;i++)
System.out.println(i+"的阶乘结果是"+sq_recursion(i));
}//main is over
}//L_Recursion is over
非递归方法
/*
* 请编写程序,要求程序用非递归算法计算n的阶乘
* n!=n*(n-1)*...*1,期中,n为大于0的整数。
* 要求在控制台窗口输出从1到10的阶乘结果.
*/
package l_nonrecursion;
/**
*
* @author 唐绍权
*/
public class L_NonRecursion {
public static int sq_nonRecursion(int i)//非递归算法函数
{
int sum=1;
if(i<=0)//判断n是否小于等于0
return 0;
while(i!=0)
{
sum*=i;
i--;
}//while
return sum;
}
public static void main(String[] args) {
for(int i=1;i<=10;i++)
System.out.println(i+"的阶乘结果是"+sq_nonRecursion(i));
}//main
}//L_NonRecursion