编写Java程序实现阶乘和递归
1.阶乘
需求说明:
编写Java程序,输入一个数字,实现该数字阶乘的计算。一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! 。例如,5的阶乘等于12345,表示为5! = 120。
实现思路:
声明变量fac、i和num,用于存储阶乘运算结果、循环变量以及用户输入的数字。
通过System.out.println()接收用户输入的数字,并为变量num赋值。
根据阶乘计算规则,使用while循环结构实现计算。
使用System.out.println ()实现格式化输出运算结果。
循环条件:! <= num
循环操作:fac *= i;i++;
实现代码:
import java.util.Scanner;public class kkk {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int fac = 1; //数字的阶乘运算结果int i = 1; //循环变量int num; //用户输入的数字//接收用户输入的数字System.out.println("请输入一个数字(1~10之间)");num = sc.nextInt();//计算该数字的阶乘while(i <= num) {fac *=i;i++;}System.out.println("数字"+num+"的阶乘:"+fac);}
}
2.递归
递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。
能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。
【问题】编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。
斐波那契数列为:0、1、1、2、3、……,即:
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2)(当n>1时)。
写成递归函数有:
int fib(intn){if(n==0)return0;if(n==1)return1;if(n>1) returnfib(n-1)+fib(n-2);
}
递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。
在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。
在编写递归函数时要注意,函数中的局部变量和参数知识局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。
由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。
编写Java程序实现阶乘和递归相关推荐
- java求阶乘的程序_按要求编写Java程序(阶乘)
(1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 ...
- 多态部分作业 1.按要求编写Java程序:(1)编写一个接口:InterfaceA,只含有一个方法int method(int n);
1.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int m ...
- [基础题] 6.(*)按如下要求编写Java程序: (1)编写一个接口:OneToN,只含有一个方法int dispose(int n)
package HomeWork_10;public class Test_06 { /*6.(*)按如下要求编写Java程序: (1)编写一个接口:OneToN,只含有一个方法int dispose ...
- 编写运行最简单的java程序——使用记事本编写java程序
编写运行最简单的java程序--使用记事本编写java程序 第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还 ...
- java shape 空间操作类_设计三个类:几何形状类(Shape)、圆类(Circle)、矩形类(.,请编写 Java程序,设计一个“形状rdquo...
问题标题 设计三个类:几何形状类(Shape).圆类(Circle).矩形类(.,请编写 Java程序,设计一个"形状&rdquo 2019-5-10来自ip:17.175.174. ...
- 使用eclipse编写JAVA程序
使用eclipse编写JAVA程序 一.Eclipse(集成开发环境IDE) **1.创建java项目 ** 2.创建程序包 3.编写JAVA源程序 4.运行程序 注:IDE自动完成了将.java源文 ...
- [基础题]8.(*)按如下要求编写Java程序:(1)定义一个交通工具收费接口Charge
/*8.(*)按如下要求编写Java程序: (1)定义一个交通工具收费接口Charge,该接口包含两个元素:一个收取费用的方法double getFee(intdistance),distance代表 ...
- [基础题] 7.第二种(*)按如下要求编写Java程序:
7.(*)按如下要求编写Java程序: (1)编写接口InterfaceA,接口中含有方法void printCapitalLetter(). (2)编写接口InterfaceB,接口中含有方法voi ...
- [基础题] 7.第一种(*)按如下要求编写Java程序:
文章来源:https://zhidao.baidu.com/question/437484122307323564.html?from=commentSubmit#answers2777835233 ...
最新文章
- edge.js架起node.js和.net互操作桥梁
- java程序配置dns后超时_处理apache HTTP客户端保持活动连接断开,超时和DNS更改
- creo 3.0计算机配置,Creo 3.0 Parametric 配置选项文件使用说明
- Java基础之Hibernate
- 常考数据结构与算法:将字符串转为整数
- Linux学习笔记13
- 学习 shell —— 条件判断 if 的参数
- 再见!热血活力的深圳
- 百度关键词抓取工具_企业网站SEO营销工具大全,快来看看你的网站到底是什么水平!...
- 卸载不了mysql2008_卸载SQL2008遇到的问题及解决办法
- 免费的文本分析 文本挖掘软件工具(第一部分)
- k2p刷机丢失eeprom_刷机经验分享,K2P无线路由器救砖必备,无线和MAC恢复窍门
- 计算机键盘排列方式,电脑上的键盘布局是怎么形成的?
- 用c加加创建c语言项目,如何使用visual studio 2017创建C语言项目
- linux中man手册用法,Linux中man手册的使用
- 超炮主题曲用计算机谱,fripsideLevel5 Judgelight(《某科学的超电磁炮》动漫主题曲)歌词-查字典简谱网...
- C# Windows桌面应用 ---- 实例:文件读写
- 【笔记】Linux 文件写入失败,提示文件系统已满
- 音视频基础学习之【07.仿优酷界面的UI设计】
- 计算机类专业入门知识