
1、采用自顶向上的递归方法,代码如下:
import java.util.Scannerpublic class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
// 从控制台输入一个整数
Scanner in = new Scanner(System.in)
int b = in.nextInt()
// 声明一个Test对象,调用cal方法获得结果
Test test = new Test()
long a = test.cal(b)
System.out.println(a)
}
// 通过递归掉调用最终返回结果
public long cal(int number) {
// 如果数字为1,则直接返回
if (number == 1) 液卜{
return 1
} else {// 否则递归求值
return number * cal(number - 1)
}
}
}
2、递归方法:
递归算法是把问题闹基穗转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间锋答接调用自己本身,这种过程(或函数)叫递归过程(或函数).
3、特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
1、首先在电脑打开eclipse软件,创建Scanner对象。
2、然后输出信息,请求用户输入要输入计算的阶乘数。代码:System.out.println("请输入要计算的阶乘数:")
3、然后创建num接受键盘输入的信息。再创建n,sum。
4、然后创建for语句,进行计算阶乘。
5、然后在最后,输出所算的阶乘结果迹氏。代码:System.out.println(n+"的阶乘为"+sum)
6、然后尺州岩再点击程序运行按钮。在下面的窗口就可以看到陵御运行结果。
按照你的要求坦灶拆编写的让枣n的阶乘的Java程序如辩拆下
public class Factorial{
public int foo(int x){
if(x==0 || x==1){
return 1
}else{
return x*foo(x-1)
}
}
public static void main(String[] args){
int n=6
Factorial f=new Factorial()
System.out.println(f.foo(n))
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)