首页 > 编程语言 > 详细

java求阶乘

时间:2021-02-25 15:05:53      阅读:20      评论:0      收藏:0      [点我收藏+]

 

(一)、阶乘原理

 //1! 1        f(1)
 //2! 2*1     f(2)
 //3! 3*2*1   f(3)
 //4! 4*3*2*1 f(4)
 //n! n*(n-1)*...*1
 ?
 从上式我们可以看出:
 f(1) = 1*f(0)   //0的阶乘是1,所以f(0)就不写出来了
 f(2) = 2*f(1)
 f(3) = 3*f(2)*f(1)
 f(4) = 4*f(3)*f(2)*f(1)
 f(n) = n*f(n-1)*...*f(1)

(二)、递归调用方法

 public class Sum {
     public static void main(String[] args) {
         System.out.println(sum(4));
    }
     //当i=1时,返回1;当i = n时则返回 n*sum(n-1),这个sum(n-1)会一直调用自己,直到n = 1;则执行return 1;方法非正常终止。
     public static int sum(int n){
         if(n == 1){
  return 1;
  }
  else{
  return n*sum(n-1);
  }
    }        
 }

(三)、进阶训练

输入阶数,输出阶乘
 //package com.baidu;
 ?
 import java.util.Scanner;
 ?
 public class SumDome01 {
     public static void main(String[] args) {
         int j = 0;
         //创建一个对象
         Scanner scanner = new Scanner(System.in);
         
         //提示使用者输入阶数
         System.out.println("请输入阶数");
         
         //判断输入是否为int类型,如果是,那么j = 输入阶数
         if(scanner.hasNextInt()){
             j = scanner.nextInt();
        }
         //如果i=0;那么输出1;
         int sum = 1;
         for (int i = 0; i <= j; i++) {
             if(i==0){
                 return 1;
            }
             else{
             return sum = sum*i;
            }
        }
         System.out.println(sum);
         //关闭scanner,减小资源占用率
         scanner.close();
    }
 ?
 }
 ?

 

java求阶乘

原文:https://www.cnblogs.com/shunkang0312/p/14446319.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!