黑马程序员技术交流社区

标题: 阶乘 [打印本页]

作者: 梦想的小草    时间: 2016-9-2 22:21
标题: 阶乘
设计一个方法,传入用户输入的一个小于10的正整数,如果传入的整数不符合要求则返回-1,
将传入的整数的阶乘返回给调用者,并在控制台输出(若返回-1则输出“对不起无法进行运算”)
        比如:
            用户输入5 那么调用该方法后 返回的是120,则在控制台输出120(5!=5*4*3*2*1的值)
              用户输入12则返回-1,则在控制台输出“对不起无法进行运算”

作者: wo1026756529    时间: 2016-9-2 23:44
能用大整数解决这个问题吗
作者: 梦想的小草    时间: 2016-9-3 21:34
wo1026756529 发表于 2016-9-2 23:44
能用大整数解决这个问题吗

你所说的大整数是指什么?
作者: wo1026756529    时间: 2016-9-5 22:57
梦想的小草 发表于 2016-9-3 21:34
你所说的大整数是指什么?

超过基本类型的范围啊,用数组什么的来存一个很大的数 啊
作者: LShu    时间: 2016-9-6 01:01
可以使用递归来做,比如  
package com.heima.practise;

import java.util.Scanner;

public class Test00 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);                        //创建一个键盘录入对象
                System.out.println("请输入一个整数(1-11之间):");                //提示用户输入一个整数并且范围为1-11之间
                int num = sc.nextInt();                                                        //将这个整数存储到num变量中
               
                int count = fun(num);                                                        //调用fun()方法获取阶乘后的数据
                System.out.println(count);                                                //将数据答应到控制台上
        }
       
        //定一个方法获取阶乘后的结果
        public static int fun(int num){
                if (num >= 12) {                                                                //确定输入数值的范围
                        System.out.println("对不起无法进行运算");
                        return -1;
                }else if (num == 1) {                                                        //定义递归的出口
                        return 1;
                }else {
                        return num * fun(num - 1);                                        //使用递归求阶乘
                }
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2