java用method求n的乘阶_Java实现n阶阶乘的计算

1.问题描述

自然数由1~n的n个数连乘积叫作n的阶乘,记作n!。要求设计一个算法,可以根据输入的数字计算其相应的阶乘。

2.问题分析

这是一个比较简单的问题,所谓阶乘实际就是n内数字的连续相乘的运算,想必大家都做过连加问题,俩者的解决思路其实很相近。但是要了解递归的思路实现会更加简洁。

3.解决方案

方案1:

既然阶乘就是连续乘积,那么我们可以设计一个循环体,在循环体外声明俩个变量,一个存放乘积,另一个存放需要计算的数字temp,而循环体内则进行乘积运算,每乘一次需要temp自加并与n进行比较,以此类推,直到temp>n结束循环,返回结果。

方案2:

如下图,每一次运算都需要调用上一次的结果,也就是将我做的任务的之前部分交给其他人,需要我做的时候直接拿来别人的结果用。而且阶乘的计算有明显的结束标志,即计算完n阶阶乘就算完成任务。这很明显是一种典型的递归问题,那么就直接采用递归的思想进行计算。

1b83cee5b059369e85d1325d770d7494.png

4.算法实现public class Box{

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

while(true){

System.out.print("please input a number:");

int num=sc.nextInt();

System.out.println();

System.out.println("method1---the factorial of "+num+" is:" +fact(num));

System.out.println("method2---the factorial of "+num+" is:" +recurrence(num));

}

}

//采用循环连乘法

public static int fact(int num){

int temp=1;

int factorial=1;

while(num>=temp){

factorial=factorial*temp;

temp++;

}

return factorial;

}

//采用递归法

public static int recurrence(int num){

if(num<=1)

return 1;

else

return num*recurrence(num-1);

}

}

运行结果

22c98b68463d6aa03a1b0994e28d9ae5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值