实验三:分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式
一、用for循环计算n!
package for_package;
import java.util.*;//导入含有输入类的包
public class for_class {
/**
* @param args
*/
public static void main(String[] args) {//void代表不会有返回值,参数也可以不用写
// TODO Auto-generated method stub
int i;
int fact=1;
int n;
Scanner in=new Scanner(System.in);//使用Scanner类定义对象
System.out.println("请输入n:");
n=in.nextInt();
for(i=1;i<=n;i++)
{
fact=fact*i;
}
for(i=1;i<=n;i++)
if(i<n)//用来控制最后一个数后面不加*
System.out.print(i+"*");//记得加+
else
System.out.print(i);
System.out.print("="+fact);
}
}

二、用while循环计算n!
package while_package;
import java.util.*;//导入含有输入类的包
public class while_class {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=1;
int fact=1;
int n;
Scanner in=new Scanner(System.in);//使用Scanner类定义对象
System.out.println("请输入n:");
n=in.nextInt();
while(i<=n)
{
fact=fact*i;
i=i+1;
}
for(i=1;i<=n;i++)
if(i<n)//用来控制最后一个数后面不加*
System.out.print(i+"*");//记得加+
else
System.out.print(i);
System.out.print("="+fact);
}
}

三、用do-while循环计算n!
package do_while_package;
import java.util.*;//导入含有输入类的包
public class do_while_class {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=1;
int fact=1;
int n;
Scanner in=new Scanner(System.in);//使用Scanner类定义对象
System.out.println("请输入n:");
n=in.nextInt();
do
{
fact=fact*i;
i=i+1;
}while(i<=n);//do-while语句后面有分号
for(i=1;i<=n;i++)
if(i<n)//用来控制最后一个数后面不加*
System.out.print(i+"*");//记得加+
else
System.out.print(i);
System.out.print("="+fact);
}
}

四、用递归方法计算n!
package digui_package;
import java.util.*;//导入含有输入类的包
public class digui_class {
public static void main(String[] args) {
int i;
int fact=1;
int n;
Scanner in=new Scanner(System.in);//使用Scanner类定义对象
System.out.println("请输入n:");
n=in.nextInt();
fact=digui(n); //不能对类型 digui_class 中的非静态方法 digui(int)进行静态引用,即
for(i=1;i<=n;i++)
if(i<n)//用来控制最后一个数后面不加*
System.out.print(i+"*");//记得加+
else
System.out.print(i);
System.out.print("="+fact);
}
public static int digui(int n)
{
if(n==0||n==1)
return 1;
return n*digui(n-1);
}
}

五、心得总结与疑惑
1、Java中想要从键盘上输入一个数时,要导入含有输入类的包,即import java.util.*;,在主函数中,使用Scanner类定义对象,即Scanner in=new Scanner(System.in);n=in.nextInt();即可。
2、public static void main(String[] args) void代表不会有返回值,参数也可以不用写。
3、do-while语句后面有分号。
4、格式控制输出算式时,用if语句来控制最后一个数后面不加*。
5、递归调用时,要有一个边界条件,即至少有一条初始定义是非递归的,另外还要有一个递推通式。
实验三:分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式的更多相关文章
- 实验三:分别用for,while和do-while循环语句以及递归方法计算n!,并输出算式
1.for循环语句计算n! 2.while循环语句计算n! 3.do-while语句计算n! 4.递归方法计算n! 5.心得:在此次实验中不知道如何从键盘进行输入,通过百度后找到一种容易理解的输入方法 ...
- 实验二 Java基础(数据/表达式、判定/循环语句)
实验二 (一)实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. ...
- C语言基础三(敲打键盘、寻找资料,循环语句)
有人在学C语言或者其他语言的时候,大家都会说逻辑思维的硬道理,认为没有逻辑思维的人走不远,那么小编这里借助简单的if...else... 英文解释if(如果),else(否则) ----------- ...
- 写给.NET开发者的Python教程(三):运算符、条件判断和循环语句
本节会介绍Python中运算符的用法,以及条件判断和循环语句的使用方法. 运算符 运算符包括算术运算符.赋值运算符.比较运算符.逻辑运算符等内容,大部分用法和C#基本一致,下面我们来看一下: 算数运算 ...
- FPGA与simulink联合实时环路系列——实验三 按键key
实验三 按键key 实验内容 在FPGA的实验中,经常涉及到按键的使用,按键是必不可少的人机交互的器件之一,在这些实验中,有时将按键的键值读取显示到数码管.LCD或者是通过串口传送到PC的串口助手上进 ...
- Java实验三
20145113 20145102实验三 实验步骤 编码标准 编程标准包含:具有说明性的名字.清晰的表达式.直截了当的控制流.可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性 ...
- Verilog HDL那些事_建模篇笔记(实验三:按键消抖)
实验三:按键消抖 首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块.电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止 ...
- 20145229&20145316 《信息安全系统设计基础》实验三 实时系统的移植
实验封面 实验内容 1.安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下) 2.安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 3.把整个GIV ...
- 20145301&20145321&20145335实验三
20145301&20145321&20145335实验三 这次实验我的组员为:20145301赵嘉鑫.20145321曾子誉.20145335郝昊 实验内容详见:实验三
随机推荐
- 【Web】Nginx下载与安装
Nginx介绍 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗 ...
- Oracle零碎总结:结构-工具-创建语句
前言:Oracle内部的存储及管理结构是1.数据库系统:2.数据库实例:3.表空间,系统用户system,普通用户:表,视图,触发器,存储过程等: 一.Oracle数据库系统和数据库实例的对应关系是一 ...
- 批处理(bat)的注释方法
前面两个批处理教程的转贴,写得实在是太好了,内容详实,语言风趣,举例清晰.说实话,原作者幽默的文风用来写 批处理教程,而不是写文学小说,实在是有些屈才,但这样优秀的教程,用在枯燥乏味的程序事业里,确实 ...
- java梳理-序列化与反序列化
一背景: 之前笔记关于rpc框架介绍中,提到为了调用远程服务,需要再确定消息结构后考虑序列化与反序列化,序列化主要是把对象转换成二进制码便于网络传输,反序列化就是相反的,主要目的是生成对象便于后续处理 ...
- Linux 输入输出(I/O)重定向
目录 1.概念 Linux 文件描述符 2.输出重定向 格式 示例 注意 3.输入重定向 格式 示例 4.自定义输入输出设备 解释 示例 最后说两句 1.概念 在解释什么是重定向之前,先来说说什么是文 ...
- 团队合作项目—(GG队)
团队展示 一.队名:GG 二.队员信息 队员 学号 叶尚文(队长) 3116008802 蔡晓晴 3216008808 杜婷萱 3216008809 龙剑初 3116004647 于泽浩 311600 ...
- 新建linux服务器初始化操作
1.关闭不需要的服务 首先确定服务器有没有ntsysv命令,如果没有的话,直接使用yum安装即可. 使用ntsysv关闭不需要的服务以节省服务器资源 需要打开的服务如下: crond:周期性计划任务 ...
- linux系统编程之信号(四):alarm和可重入函数
一,alarm() 在将可重入函数之前我们先来了解下alarm()函数使用: #include <unistd.h> unsigned int alarm(unsigned int sec ...
- CSS选择器分类总结
一.选择器语法及其意义(pattern and meaning) Pattern Meaning CSS level E an element of type E 标记选择器,匹配所有标签名为E的元素 ...
- SHT20 IIC总线驱动概述
SHT20温湿度传感器使用iic总线的驱动方式,以下资料参考SHT20 datasheet总结 1.IIC总线 Start信号 IIC总线的起始信号以SDA由高电平变为低电平,等待5us以上,再由SC ...