开发者社区> 问答> 正文

用java递归算法求一个数字的阶乘

用java递归算法求一个数字的阶乘

展开
收起
知与谁同 2018-07-18 15:23:55 2371 0
7 条回答
写回答
取消 提交回答
  • public static Integer factorial(Integer n) { if (n < 0) { return 0; } if (n == 1) { return 1; } return n * factorial(n-1); } public static void main(String[] args) { // 计算6的阶乘 System.out.println(jieCheng(6)); }
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • 社区管理员
    void test(int n){
    return n*test(n-1);
    }
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • 以上的大神们都写了,而且肯定对了,我在这里补充点蛋疼的想法吧。应该对一些非法使用者(蛋疼者)使用小数呀,负数的时候,考虑一下怎么处理就更能体现一个蛋疼程序员的蛋疼程度,哈哈,菜鸟在这里飘过,祝你们都NB
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    用递归算法求一个数字的阶乘的程序如下:
    public class Jc {
    public static void main(String[] args) {
    System.out.print(fun());
    }
    public int fun(){
    if (n==1) return 1;
    else return n*f(n-1);

    }
    }
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • public int fun(int n){
    if(n==1){
    return n;
    }else{
    return n*fun(n-1);
    }
    }
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • Nothing for nothing.
    用递归算法求一个数字的阶乘的程序如下:
    public class JieCheng {
    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.print("请输入一个整数:");
    int n = in.nextInt();
    System.out.println(n+"!="+f(n));
    }
    static long f(int n){
    if (n==1) return 1;
    else return n*f(n-1);
    }
    }
    运行结果:
    请输入一个整数:6
    6!=720
    2019-07-17 22:54:27
    赞同 展开评论 打赏
  • 1、采用自顶向上的递归方法,代码如下: import java.util.Scanner;

    public 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) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

    2019-07-17 22:54:27
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载