Java实现求阶乘和的三种方法

Java编程实例之---Java中的阶乘程序 更重要的是,由于可以存储 n 个大小为常数的条目,因此 memoization 缓存(HashMap)的值在空间复杂度上为 O(n)。在最坏的情况下,递归树的大小为 n,这意味着调用堆栈使用 O(n) 空间。:非负整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。发音为“4 的阶乘”。这也具有 O(n) 的时间复杂度,最坏的情况涉及在恒定时间内进行 n 次递归调用。让我们看看使用 Tabulation 的 Java 中的阶乘程序。空间复杂度也是 O(n),因为用于存储阶乘值的数组大小为 n+1。 阅读详情

今天考试没考好,所以好好反省了一下,说明自己的基础知识不够牢固,所以对每个编程题进行研究。

第一种解法:原始的利用for循环

题目:求1!+2!+3!+4!+…+N!的值

public class Sum {
	public static void main(String[] args){
		long s;
		long sum=0;
		for(int j=1;j<=20;j++){//外循环
			s=1;
		 for(int i=1;i<=j;i++){//内循环,求对应数的乘方
		    	  s=s*i;
		      }
		      sum=sum+s;
			
		}
		 System.out.println("总和为:"+sum);
		}
	 
}

第二种方法:利用方法

public class Sum {
    private static long factorial(int num) {//获取相应数的阶乘方法
		if( num==1){
			return 1;
		}
			return num*factorial(num-1);
		
	}
    public static long sum(int num){//求对应数的和的方法
		if( num==1){
			return 1;
		}
		return factorial(num)+sum(num-1);
		
	}
	public static void main(String[] args) {
		System.out.println(sum(20));
	}
}

第三种方法:for循环+方法

public class FacDemo {
	//求阶乘的方法
	public long fac(int n){
		long s=1;
		for(int i=1;i<=n;i++){
			s*=i;//s=s*i;
		}
		return s;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FacDemo facDemo=new FacDemo();
		long fac=facDemo.fac(3);
		System.out.println("3!="+fac);//测试是否正确
		//求1!+2!+3!+4!+..10!
		long sum=0;
		for(int i=1;i<=20;i++){
			fac=facDemo.fac(i);
			sum+=fac;
		}
		System.out.println("1!+2!+3!+4!+..20!="+sum);
	}

}

java实现阶乘(附完整源码) 阅读详情

相关推荐

Java实现阶乘

阶乘是一个常见的数学运算,用于计算一个正整数的阶乘结果。阶乘定义如下:对于一个非负整数n,它的阶乘n!表示从1到n的所有正整数的乘积。这是一个简单的Java实现阶乘的例子。如果你有任何问题,请随时提问。你可以将上述代码复制到Java编译器中进行编译和运行,然后根据需要修改。是否为0或1,如果是,则直接返回1,因为0和1的阶乘都是1。,将每个数字乘以前面所有数字的乘积,并将结果存储在。,并返回计算得到的阶乘结果。在上面的代码中,我们定义了一个。变量的值,计算不同数字的阶乘。方法,并将计算结果打印输出。

CyberNerdX的博客 505

Java实现阶乘的计算(四种方法)

用Java实现阶乘的计算 Java入门练习 废话不多说,直接上代码。 import java.math.BigInteger; import java.util.ArrayList; public class doFactorial { public static void main(String[] args) { int number=5; System.out.prin...

AD_CSY的博客 4万+

基于表面肌电信号sEMG的手势识别——以Ninapro DB1数据集使用CNN网络识别为例

本文实验采用公共数据集Ninapro。该数据集数据量大,采集的动作丰富,每个单位数据集里面包括表面肌电信号、加速度计、手部运动学和动态数据等,记录了67名完整受试者和11名进行了至少50 次手部运动的截肢者的数据。NinaproDB1数据集包括27名完整的受试者(7 名女性和20名男性,其中2个左手和25 个右手) 的肌电信号。信号采集频率为100Hz。

树下一朵云的博客 2295

用Java实现阶乘

阶乘在高中时都学过,比如说5的阶乘用数学表示就是5!,在写的通俗一点就是5 * 4 * 3 * 2 * 1。用一个数学公式表示就是n!=1 * 2 * 3 * …n。阶乘也可以用代码实现,Java中有三中循环结构,先看for循环的 import java.util.Scanner; public class jiecheng { public static void main(String[] args){ Scanner a = new Scanner(System.in);

weixin_52744583的博客 3777

微信小程序推送微信服务号模板消息

微信小程序中发送微信服务号模板消息,无需用户手动确认订阅,无需绑定开放平台,无需使用UnionId。

qq_20751269的博客 1556

避开封号风险!wxauto+Claude API实现微信智能客服的合规方案

本文详细介绍了如何利用wxauto和Claude API构建合规的微信智能客服系统,避免封号风险。通过技术选型对比、防封策略设计及大模型接入实践,为企业提供了一套安全高效的解决方案,特别适合中小企业在微信生态中部署AI客服。

sql99的博客 446

Java求阶乘和

1.定义一个方法,方法里面使用一个循环,在调用时再使用一个循环反复调用。求 1~n 数字的阶乘和,n为键盘输入的数字。2.定义一个方法,方法里面使用嵌套循环。1.Scanner键盘输入技术。2.方法的定义和调用。...

小只.的博客 1万+

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

Java 阶乘算法 三种简单实现

阶乘算法: Java 方法(一) package 第一章; import java.util.Scanner; import java.util.Arrays; public class fact1 { public static int fact1(int n) { if (n == 0) { return 1; } return n * fact1(n ...

steven_cici的博客 6004

DMC-E 系列总线控制卡----雷赛板卡介绍(十七)

低的速度平稳地接近目标位置,降低运动部件对接触点的冲击。设置插补目标位置,插补方向,以确定插补动作。圆形区域限位,即运动仅在用户设定的圆形范围内进行,超出这个范围,运动会依据设定。首先,用户需要绑定两个轴进而确定该功能所处的坐标系。仅支持平面圆形限位,不支持空间圆形限位。径,可以确定该区域在坐标系中的位置。)运动开始前,用户应当将旋转轴调整到与插补曲线的起点位置相切的角度;可以配合椭圆插补或圆弧插补运动,实现跟随轴的旋转运动角度与曲线当前。外,其它运动形式若开始运动时在限位区域外,则禁止运动;

A_nanda的博客 651

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

使用Java方法求阶乘之和

方法一: public class SumFactorial{ public static void main(String[] args){ System.out.println("结果为"+find(5)); //输出结果 } public static long Factorial(int n){ //定义Factorial方法求一个阶乘 long s=1; for (; n>=1;x-- ){ //累乘 s

qq_45774645的博客 7959

高创伺服的龙门调试经历2

摘要:本文介绍了高创伺服在龙门控制中的配置方法。首先通过ServoStudio2连接驱动器并命名区分主从轴(MASTER/DIFF),然后设置接口模式、23位编码器参数及极限位置。重点说明龙门模式的三项关键参数设置(gantryfbenmode=1、gantrymode=1/2)和连线状态确认。建议单轴自动整定后调整从轴增益(如0.2),并强调带刹车电机的同步控制要点:刹车线需接同一继电器由主轴控制,避免位置偏差。

wzz418550729的博客 908

java求阶乘

输入一个数,求出它的阶乘 方法一(利用for循环) import java.util.Scanner; class TestMul{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入要求的数阶乘:"); int num = sc.nextInt(); int result=1; for(int i=1;i<=num;i++){

zhoutianhua的博客 7313

形状记忆合金热机械本构模型的ABAQUS子程序实现与Fortran\_ABAQUS编程实践

本文详细介绍了如何使用ABAQUS子程序实现形状记忆合金的热机械本构模型,并通过Fortran_ABAQUS进行编程实践。我们首先介绍了问题的背景和目标,然后讲解了如何在Fortran_ABAQUS子程序中实现热变形模型、应力应变关系和相变模型,最后进行了ABAQUS模拟,并分析了模拟结果。希望通过本文的讲解,能让大家更深入理解ABAQUS子程序以及Fortran的使用,也希望能对大家在进行相关学习或研究工作时提供一些帮助。

qq_38334677的博客 1327

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java调用方法求n的阶乘_java用三种方法实现阶乘n!

? 用三种方法来实现n!实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!.废话不多说,直接上代码:?? 第一种方法:?//第一种方法:package Factorial;import java.math.BigDecimal;import java.util.Scanner;public class Factorial1 {public static B...

weixin_33603105的博客 2150

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java实现 求阶乘和

问题描述 定义方法,求出1!+2!+3!+…+n!的和,其中的数字n由用户输入。 备注:!表示阶乘,n!=n*(n-1)(n-2)…*1 import java.util.Scanner; public class Test02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int n = sc.nextInt()

好吃不腻的博客 1413

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java求阶乘和求阶乘之和

* name:first 功能:1.求阶乘 2.求阶乘之和 */ package exe01; import java.util.Scanner; //输入类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo...

ELF1111的博客 2395

Java--求阶乘和

1、问题 求1!+2!+3!+4!+…+n!的和 2、阶乘如何计算? 1的阶乘为1,2的阶乘等于21,3的阶乘等于321,那么n!=n(n-1)(n-2)…*1 3、阶乘和: 求出每一个数的阶乘再进行相加 4、代码实现: package demomethod03; import java.util.Scanner; /** * 求阶乘和 * 求1!+2!+3!+4!+........+n!...

Subuprogrammer的博客 1170

java用三种方法实现阶乘n!

用三种方法来实现n!实现使用BigDecimal类,因为用int最多正确算到12!,用long最多正确算到20!.实现方法都比较简单,但是转换为BigDecimal实现后可能看起来有点莫名其妙。废话不多说,直接上代码:     第一种方法:从1开始,一直递增乘到n,从而实现n!   Java代码   package Factorial;      im

playwife的博客 2465

Java求n的阶乘

题目要求 从键盘输入一个数字n,求出n的阶乘 实现代码 import java.util.Scanner; public class Main { public static int factorial(int x){//factorial:阶乘 int product = 1;//乘积 for (int i = 1; i <= x ; i++) { product = product * i; }

小只.的博客 7821

求1到10的阶乘和;

求1到10的阶乘和; 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ...

weixin_44831330的博客 2074

求n的阶乘递归方法Java

是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!假设n为3那么3的阶乘就是3!=3*2*1,如果用成n的就是n!=n*(n-1)*[(n-1)-1]写代码前我们要写出阶乘递归的公式这样才能更清楚写出代码。递归如果不加条件就会不停的调用自己,n的阶乘公式是。这样就看出来结束条件就是n=1的时候就结束了。=n*fac(n-1)递归,就是在运行的过程中调用自己。我们已经了解了递归和阶乘的概念。1.先给递归设立一个结束的条件。这样就求出来n的阶乘了。......

canyou1998的博客 1万+

阶乘java_Java中求阶乘的算法

Java中求阶乘的算法1.一般算法:public class Factorial {public static int factorial(int n) {if (n < 0 || n > 16) {System.err.println("n must be great than 0 and less than 17");return -1;} else if (n == 0) {re...

weixin_39727863的博客 1406

Java递归算法和迭代算法求阶乘

什么是递归: 1.1含义: 递归就是一个函数直接或者间接的调用自己的方法; 1.2如何利用递归求阶乘? 分析: 例如:求4的阶乘 等于4*3*2*1; 假设我们把使n=4的话,那么等式就变成 n*(n-1)*(n-2)(n-3) 第一个数:n 第二个数=第一个数-1; ...

唐星明 2678

java 求1到n的阶乘和

import java.util.Scanner; public class jiecheng { public static void main(String[] args) { // TODO Auto-generated method stub // int sum=0,su; // for (int i = 1; i // su=1; // for

baikaishui86的专栏 8491
上一篇: Java封装作业
下一篇: java面向对象综合案例作业
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值