【0基础学java】教学日志:javaSE-循环语句

一、while循环和do...while循环

/*
while循环:先判断条件,再执行逻辑代码
		四部分组成:
			1、初始化:循环的初始化变量
			2、条件判断:条件返回必须是true或false
			3、循环体:条件满足的话执行的逻辑代码
			4、迭代条件:给循环跳出的条件
			
do...while   先执行逻辑代码,再判断条件

对比while和do...while的区别:do...while至少执行一次

*/

public class WhileDemo{
	public static void main(String[] args){
		//while循环
		//输出1-100的值
		//1、初始化一个变量
		/*int i = 1;
		//2、条件判断
		while(i <= 100){
			System.out.println("i = " + i);
			//4、迭代条件
			i++;
		}*/
		
		//计算1-100的和
		/*int i = 1;
		//定义一个存储计算后的和的变量
		int sum = 0;
		while( i<= 100){
			sum += i;
			i++;
		}
		System.out.println("1-100的和是:" + sum);*/
		
		//计算1-100之间偶数的和
		/*int num = 1;
		int sum = 0;
		while(num <= 100){
			//判断是否是偶数
			if(num % 2 == 0){
				//求和
				sum += num;
			}
			num++;
		}
		System.out.println("1-100的偶数的和是:" + sum);*/
		
		//do...while
		/*int i = 1;
		do{
			System.out.println("i = " + i);
			i++;
		}while(i <= 100);*/
		
		//计算1-100偶数之和
		int num = 1;
		int sum = 0;
		do{
			if(num % 2 == 0){
				sum += num;
			}
			num++;
		}while(num <= 100);
		System.out.println("1-100的偶数的和是:" + sum);
		
	}
}

二、for循环

/*
for循环:
		for(初始化1;条件判断2;步进器4){
			逻辑代码3
		}
		执行顺序:1-2-3-4-2-3-4-2-3-4...
		
		for循环的特点:
			1、简洁,用的最多
			2、for循环的初始化变量的作用域只在for循环体中可用
			   而while循环的初始化变量是从定义开始到方法结束
*/

public class ForDemo{
	public static void main(String[] args){
		//for循环
		//输出1-100之间的数
		/*for(int i = 1;i<=100;i++){
			System.out.println("i = " + i);
		}*/
		
		//计算1-100之间偶数的和
		/*int sum = 0;
		for(int num = 1 ; num<= 100 ; num++){
			//判断是否是偶数
			if(num % 2 == 0){
				sum += num;
			}
		}
		System.out.println("1-100之间偶数的和:" + sum);*/
		
		/*int sum = 0;
		for(int i = 1;i<=10;i++){
			sum += i;
		}*/
		//for循环的写法
		/*int sum = 0;
		int i = 1;
		for(;i<=10;){
			sum += i;
			i++;
		}*/
		
		int i = 0;
		for(;;){
			System.out.println("i = " + i);
			i++;
		}
		//System.out.println(i);
		//System.out.println("1-10的和:" + sum);
		
		/*int sum2 = 0;
		for(int i = 1;i<=20;i++){
			sum2 += i;
		}
		System.out.println("1-20的和:" + sum2);*/
	}
}

三、break的使用

/*
    生成0-100随机数,直到生成88为止,停止循环!
		break:完全跳出循环
			注意:
				如果是多层循环,break只能跳出它所在那层循环
*/

public class BreakDemo{
	public static void main(String[] args){
		//定义一个计数器
		/*int count = 0;
		while(true){
			int number  = (int)(Math.random()*101);
			if(number == 88){
				break;
			}
			count++;
			System.out.println(count + "次:" + number);
		}*/
		
		//输出(1,1)(1,2)(1,3)...直到输出(6,6)停止
		outer: for(int i = 1; i < 10; i++){
			inner: for(int j = 1; j < 10;j++){
				System.out.print("(" + i + "," + j + ")");
				if(i == 6 && j == 6){
					//break;
					//return;//返回方法,终止方法的执行
					break outer;
				}
			}
		}
	}
}

四、continue的使用

/*
	continue:跳出当前循环,进行下一次循环
*/

public class ContinueDemo{
	public static void main(String[] args){
		//把100~150之间不能被3整除的数输出
		for(int i = 100; i <= 150; i++){
			if(i % 3 == 0){
				continue;
			}
			System.out.println(i);
		}
	}
}

五、return的使用

/*
	return:两种格式
		– 1、return expression
			 返回一个值给调用该方法的语句。
			 返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据
			 类型。
		– 2、return
			 当方法声明中用void声明返回类型为空时,它不能返回任何值。
*/

public class ReturnDemo{
	public static void main(String[] args){
		//System.out.println(getNum());
		//return;
	}
	
	//定义一个方法
	public static boolean getNum(){
		//return 1;
		//return;
		boolean flag = true;
		
		return flag;
	}
}

六、递归算法

import java.util.Scanner;
/*
	斐波那契数列,可以选择输出几个数
*/

public class Febonaci{
	public static void main(String[] args){
		//创建Scanner
		/*Scanner sc = new Scanner(System.in);
		System.out.print("请输入要输出几个数:");
		int count = sc.nextInt();
		int x = 1;
		int y = 1;
		int z = 0;
		for(int i = 1;i <= count;i++){
			if(i== 1 || i==2){
				System.out.print(1 + "\t");
			}else{
				z = x + y;
				x = y;
				y = z;
				System.out.print(z + "\t");
			}
		}*/
		
		for(int i = 1;i<=10;i++){
			System.out.print(getNumber(i) + "\t");
		}
	}
	
	/*
		递归算法:在程序运行过程中,发生程序本身调用自己的情况,称之为递归
			注意:
				1、能不使用递归算法尽量不使用递归算法
						使用递归算法会加大资源的消耗
						如果递归算法的深度过于深,那么可能造成栈溢出
				2、如果用其他方法无法实现,就必须用递归
					例如:输出电脑上某一个磁盘上的所有文件名
			
	*/
	public static int getNumber(int number){
		if(number==1 || number == 2){
			return 1;
		}else{
			return getNumber(number-1) + getNumber(number-2);
		}
	} 
	
}

七、练习题

public class Test1{
	public static void main(String[] args){
		
		//用while和for循环输出1-1000之间能被5整除的数,且每行输出3个
		int j = 0;
		for(int i = 1; i <= 1000; i++){
			if(i % 5 == 0){
				System.out.print(i + "\t");
				j++;
				if(j % 3 == 0){
					//System.out.print("\n");
					System.out.println();
					j = 0;
				}
			}
		}
	}
}

———————————————————————————————————————————

import java.util.Scanner;
/* 
购物结算
*/

public class TestShopping{
	public static void main(String[] args){
		System.out.println("***************************************");
		System.out.println("请选择购买的商品编号:");
		System.out.println("1.T恤\t2.网球鞋\t3.网球拍");
		System.out.println("***************************************");
		//创建Scanner对象
		Scanner sc = new Scanner(System.in);
		String flag = "y";
		//存储商品编号的变量
		int pId = 0;
		//存储商品数量的变量
		int num = 0;
		//T恤的单价
		double tPrice = 245.0;
		//网球鞋的单价
		double sPrice = 570.0;
		//网球拍的单价
		double pPrice = 320.0;
		//定义每次购买商品总价
		double oneTotalPrice = 0;
		//定义一个计算购买商品总额的变量
		double totalPrice = 0;
		while("y".equals(flag)){
			System.out.println();
			System.out.print("请输入商品编号:");
			pId = sc.nextInt();
			if(pId != 1 && pId != 2 && pId != 3){
				System.out.println("亲,你买的商品不存在,请重新输入!");
				//跳出当前循环进行下一次循环
				continue;
			}
			System.out.print("请输入购买数量:");
			num = sc.nextInt();
			switch(pId){
				case 1:
				    oneTotalPrice = tPrice * num;
					System.out.println("T 恤¥" + tPrice + "\t" + "数量 " + num + "\t" + "合计 " + "¥" + oneTotalPrice);
					totalPrice +=oneTotalPrice;
					//清0
					oneTotalPrice = 0;
					break;
				case 2:
					oneTotalPrice = sPrice * num;
					System.out.println("网球鞋¥" + sPrice + "\t" + "数量 " + num + "\t" + "合计 " + "¥" + oneTotalPrice);
					totalPrice +=oneTotalPrice;
					//清0
					oneTotalPrice = 0;
					break;
				case 3:
					oneTotalPrice = pPrice * num;
					System.out.println("网球拍¥" + pPrice + "\t" + "数量 " + num + "\t" + "合计 " + "¥" + oneTotalPrice);
					totalPrice +=oneTotalPrice;
					//清0
					oneTotalPrice = 0;
					break;
			}
			System.out.print("是否继续(y/n):");
			flag = sc.next();
		}
		System.out.println();
		System.out.print("折扣:");
		//定义折扣变量
		double zk = sc.nextDouble();
		totalPrice *= zk;
		System.out.println("应付金额:" +  totalPrice);
		//定义实付变量
		System.out.print("实付金额:");
		double sf = sc.nextDouble();
		if(sf < totalPrice){
			System.out.print("您输入的金额小于应付金额,请重新输入:");
			sf = sc.nextDouble();
		}
		System.out.println("找钱:"+ (sf-totalPrice));
	}
}

 ——————————————————————————————————————————

import java.util.Scanner;
/*
	计算顾客年龄比例
*/

public class AddRate{
	public static void main(String[] args){
		//创建Scanner对象
		Scanner sc = new Scanner(System.in);
		//定义变量存储大于30的人数
		int ageUp = 0;
		//定义变量存储小于30的人数
		int ageDown = 0;
		for(int i = 1 ; i <= 10; i++){
			System.out.print("请输入第" + i + "位顾客的年龄:");
			int age = sc.nextInt();
			if(age > 30){
				//累计
				ageUp++;
			}
			if(age < 30){
				//累计
				ageDown++;
			}
		}
		System.out.println("30岁以上的比例是:" + (ageUp/10.0 * 100) + "%");
		System.out.println("30岁以下的比例是:" + (ageDown/10.0 * 100) + "%");
	}
}

———————————————————————————————————————————

import java.util.Scanner;
/*
 十进制数转化成二进制数
*/

public class TenToTwo{
	public static void main(String[] args){
		//创建Scanner对象
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入十进制数:");
		int number = sc.nextInt();
		String str = "";
		while(number != 0){
			int i = number % 2;
			str = i + str;
			number = number / 2;
		}
		System.out.println(str);
	}
}

———————————————————————————————————————————

/*
 1!+2!+……+10!的和
*/

public class TestTen{
	public static void main(String[] args){
		int sum = 1;
		//定义变量存储每个数阶乘之和
		int total = 0;
		for(int i = 1; i<=10 ;i++){
			for(int j = 1; j <= i ; j++){
				sum *= j;
			}
			total += sum;
			//System.out.println(i + "!=" + sum);
			sum = 1;
			if(i != 10){
				System.out.print(i + "! + ");
			}else{
				System.out.print(i + "! = ");
			}
		}
		System.out.println(total);
	}
}

 ——————————————————————————————————————————

/*
	输出九九乘法表
*/

public class NineNineDemo{
	public static void main(String[] args){
		//外层循环控制行
		for(int i = 1 ; i <= 9; i++){
			//内层循环控制列
			for(int j = 1; j<=i ;j++){
				System.out.print(j + "*" + i + "=" + (i*j) + "\t");
			}
			System.out.println();
		}
	}
}

  ——————————————————————————————————————————

/*
	百钱买百鸡
*/

public class BuyChicken{
	public static void main(String[] args){
		for(int i = 0;i<= 20;i++){
			for(int j = 0;j<=34 ;j++){
				for(int k = 0;k<=300;k++){
					if(((i+j+k)==100) && ((5*i+3*j+k/3)==100) && (k % 3 == 0)){
						System.out.println("公鸡:" + i + "  母鸡:" + j + "  小鸡:" + k);
					}
				}
			}
		}
	}
}

八、选择语句+循环语句作业

  1. 输入一个数,判断是奇数还是偶数
public class TestNum {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//输入一个数
		System.out.println("请输入你要判断的数据:");
		int x = input.nextInt();
		//判断一个数据是奇数还是偶数
		if(x%2 == 0) {
			System.out.println(x+"这个数据是偶数");
		}else {
			System.out.println(x+"这个数据是奇数");
		}
	}
}
  1. 根据成绩输出对应的等级,使用if多分支和switch语句分别实现。
    1. A级   [90,100]
    2. B级   [80,90)
    3. C级   [70,80)
    4. D级   [60,70)
    5. E级   [0,60)
public class TestGrade1 {
	public static void main(String[] args) {
		// 给出分数
		Scanner  input  = new Scanner(System.in);
		System.out.println("请输入一个分数");
		double score = input.nextDouble();
		// 根据分数,给出等级
		String grade;
		if (score >= 90) {
			grade = "A";
		} else if (score >= 80) {
			grade = "B";
		} else if (score >= 70) {
			grade = "C";
		} else if (score >= 60) {
			grade = "D";
		} else {
			grade = "E";
		}
		// 输出等级
		System.out.println("score=" + score + ",grade=" + grade);
	}
}
public class TestGrade2 {
	public static void main(String[] args) {
		// 给出分数
		Scanner  input  = new Scanner(System.in);
		System.out.println("请输入一个分数");
		int score = input.nextInt();			
		//根据分数,给出等级
		String grade="E";
		switch(score/10){
			case 10:
			case 9:grade="A";break;
			case 8:grade="B";break;
			case 7:grade="C";break;
			case 6:grade="D";break;
			default :grade="E";				
		}
		//输出等级
		System.out.println("score="+score+",grade="+grade);
	}
}

     3.根据月份,输出对应的季节,并输出至少两个描述该季节的成语和活动。

public class TestSeason {
	public static void main(String[] args) {
		// 输入月份
		Scanner  input  = new Scanner(System.in);
		System.out.println("请输入月份:");
		int month = input.nextInt();
		//根据月份输出季节
		switch(month){
			case 1:
			case 2:
			case 3: System.out.println("春天-春暖花开 春意盎然-植树 踏青");break;
			case 4:
			case 5:
			case 6: System.out.println("夏天-夏日炎炎  夏雨雨人-游泳  吃雪糕");break;
			case 7:
			case 8:
			case 9: System.out.println("秋天-秋高气爽 秋风落叶- 秋收  送秋波 ");break;
			case 10:
			case 11:
			case 12: System.out.println("冬天-寒冬腊月 白雪皑皑 -滑雪  溜冰");break;
			default: System.out.println("您的输入有误");
		}
	}
}

     4.判断一个数是否是素数。

public class TestPrime {
	public static void main(String[] args) {
		// 输入一个数
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int n = input.nextInt();
		// 判断是否是素数
		boolean flag = true;
		if (n == 1)
			flag = false;
		else {
			for (int i = 2; i < n; i++) {
				if (n % i== 0) {
					flag = false;
					break;
				}
			}
		}
		// 输出结果
		if (flag) {
			System.out.println(n + "是素数");
		} else {
			System.out.println(n + "不是素数");
		}
	}
}

     5.从键盘输入一个班5个学生的分数,求和并输出。

public class TestSum {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//输入总分并求和
		double sum = 0;
		for (int i = 0; i < 5; i++) {
			System.out.println("请输入第"+(i+1)+"个学生的成绩");			
			double  d = input.nextDouble();
			sum += d;
		}
		//输出总分
		System.out.println("总分是"+sum);
	}
}

     6.从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。

public class Test10to2_1 {
	public static void main(String [] args){
		//给出一个十进制数
		int num2 =6;
		//转换
		int num = num2;
		String str="";
		do{
			//除以2得到商
			int div = num/2;
			//得到余数作为二进制位
			int mod = num%2;
			str = mod + str;			
			//商作为被除数
			num = div;
		}while(num!=0);//被除数不是零		
		//输出二进制数
		System.out.println(num2+"------>"+str);		
	}
}

     7.根据考试成绩输出对应的礼物,90分以上爸爸给买电脑,80分以上爸爸给买手机, 60分以上爸爸请吃一顿大餐,60分以下爸爸给买学习资料。

要求:该题使用多重if完成

public class Test 1{
	public static void main(String[] args) {
		int score = 80;
		if (score >= 90) {
			System.out.println("电脑");
		} else if (score >= 80) {
			System.out.println("手机");
		} else if (score >= 60) {
			System.out.println("大餐");
		} else {
			System.out.println("学习资料");
		}
	}
}

     8.请根据英文单词的第一个字母判断星期几,如果第一个字母是一样的,则继续判断第二个字母。例如如果第一个字母是S,则继续判断第二个字母,如果第二个字母是a,则输出“星期六”。星期的英文单词如下表所示。

星期一

星期二

星期三

星期四

星期五

星期六

星期日

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

Sunday

    

public class Test2{
	public static void main(String[] args) {
		char i, j;
		System.out.println("please enter the first letter:");
		Scanner input = new Scanner(System.in);
		String str = "";
		str = input.next().toLowerCase();
		// 转换成字符串
		i = str.charAt(0);
		switch (i) {
			case 'm':
				System.out.println("Monday\n");	break;
			case 'w':
				System.out.println("Wednesday\n");break;
			case 'f':
				System.out.println("Friday\n");	break;
			case 't':
				System.out.println("please enter the next letter:");
				str = input.next().toLowerCase();
				j = str.charAt(0);
				if (j == 'u')
					System.out.println("Tuesday\n");
				else if (j == 'h')
					System.out.println("Thursday\n");
				else 
					System.out.println("error\n");
				break;
			case 's':
				System.out.println("please enter the next letter:");
				// 转换成字符串
				str = input.next().toLowerCase();
				j = str.charAt(0);
				if (j == 'a')
					System.out.println("Saturday\n");
				else if (j == 'u')
					System.out.println("Sunday\n");
				else 
					System.out.println("error\n");
				break;
			default:
				System.out.println("error\n");
				break;
		}
	}
}

     9.输入一批整数,使用循环求出最大值与最小值,输入0时结束。

public class Test 3{
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int max = 0, min = 0;
		int nums = 1;
		//输入第一个数,指定它是最大值和最小值
		System.out.println("请输入1个数:");
		nums = input.nextInt();
		max = nums;
		min = nums;
		//依次输入其他数字,并判断是否是最大值和最小值
		for (int i = 2; nums != 0; i++) {
			System.out.println("请输入" +i + "个数:");
			nums = input.nextInt();
			if (nums != 0) {
				if (nums > max) {
					max = nums;
				}
				if (nums < min) {
					min = nums;
				}
			}
		}
		//输出最大值和最小值
		System.out.println("最大值为:" + max);
		System.out.println("最小值为:" + min);
	}
}

    10.给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐。

public class Test4 {
	public static void main(String[] args) {
		int money = 20, price = 3;  
		// temp表示每一次购买的可乐瓶数
		int temp = 0;
		// change表示每次购买完可乐剩下的钱
		int change = 0;
		// sum表示总的可乐瓶数
		int sum = 0; 
		// 如果钱数大于可乐价格
		while (money >= price) {
			// 购买可乐
			temp = money / price; 
			// 总可乐瓶数增加
			sum += temp; 
			// 计算买可乐剩下的钱
			change = money % price; 
			// 兑换可乐瓶子,计算剩余的总钱数
			money = temp + change; 
		}
		// 输出结果
		System.out.println(sum); 
	}
}

     11.从键盘输入某个十进制小数,转换成对应的二进制小数并输出。(查询十进制小数转换成二进制小数的算法,使用循环来实现。最多保留小数位后7位数字即可)
 

public class Test5{
	public static void main(String [] args){
		//给定一个十进制小数
		double d = 0.6666;
		//转换
		double mul = d;
		StringBuffer buffer = new StringBuffer("0.");
		//定义一个计数器
		int count=0;
		do{
			//乘以2得到积
			double result =  mul*2;//1.250
			//从积中取出整数部分作为二进制位
			int i = (int)result;
			buffer.append(i);
			//计数
			count++;
			//判断是否够7位
			if(count==7){
				break;
			}
			//从积中取出小数部分作为下一次的乘数
			mul= result-i;		
		}while(mul!=0); //判断乘数是否为0
		//输出十进制小数和二进制小数
		System.out.println(d+"---->"+buffer);
	}
}
注意:此题中使用了StringBuffer,这个类的使用会在后面的章节中讲。

九、多重循环+方法+递归作业

     1.打印九九乘法表

public class MultiTable {
	public static void main(String[] args) {
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				// 不换行打印数据
				System.out.print(i + " * " + j + " = " + i * j + "\t"); 
			}
			// 打印完一行进行换行
			System.out.println(); 
		}
	}
}

     2.判断1-100之间有多少个素数并输出所有素数。(将判断一个数是否是素数的功能提取成方法,在循环中直接调用即可)

public class PrimeNum {
	public static void main(String[] args) {
		int count = 0;
		for (int j = 1; j <= 100; j++) {
			if (isPrime(j)) {
				System.out.print(j + " ");
				count++;
				if (count % 8 == 0) {
					System.out.println();
				}
			}
		}
	}
	private static boolean isPrime(int n) {
		boolean flag = true; // flag:返回值默认true,表示是素数
		if (n == 1)
			flag = false;
		else {
			for (int i = 2; i <= Math.sqrt(n); i++) {
				if (n % i== 0) {
					flag = false;
					break;
				}
			}
		}
		return flag;
	}
}

     3.输入三个班,每班10个学生的成绩,求和并求平均分

import java.util.Scanner;
public class StuScoreCalc {
	public static void main(String[] args) {		
		Scanner sc = new Scanner(System.in);		
		for(int i = 1;i<=3;i++){
			//输入每个班成绩并求和
			System.out.println("请输入第"+i+"个班的成绩");
			double sum = 0;
			for(int j=0;j<10;j++){
				System.out.println("   请输入第"+(j+1)+"个学生成绩:");
				double score  = sc.nextDouble();
				System.out.println(score);
				sum += score; 
			}
			//求平均分
			double avg = sum / 10;
			//输出结果
			System.out.println("第"+i+"个班学生总分:"+sum+" 平均分:"+avg);		}
	}	 
}

     4.编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、3..... 求数列的第40位数是多少。

public class TestSum{
	public static void main(String[] args) {
		System.out.println(sum(40));
	}
	public static long sum(int n) {
		if (n <= 0) {
			return 0;
		} else if (n == 1 || n == 2) {
			return 1;
		} else {
			return sum(n - 1) + sum(n - 2);
		}
	}
}

     5.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

public class Prog3{
	public static void main(String[] args){
		for(int i=100;i<1000;i++){
			if(isLotus(i))
			   System.out.print(i+" ");
		}
		System.out.println();
	}
	//判断水仙花数
	private static boolean isLotus(int lotus){
		boolean flag=false;
		int a = lotus % 10;
		int b = lotus / 10 % 10;
		int c = lotus / 100 % 10;
		if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == lotus) {
			flag = true;
		}
		return flag;
	}
}

6.定义方法:打印指定行和列的矩形

public class TestRect {
	public static void main(String[] args) {
		// 调用printStr方法
		printStr(5, 4, "*");
	}
	public static void printStr(int rows, int columns, String str) {
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < columns; j++) {
				System.out.print(str);
			}
			System.out.println();
		}
	}
}

    7.编写Java程序,实现接收用户输入的正整数,输出该数的阶乘。要求:限制输入的数据在1-10之间,无效数据进行提示,结束程序。要求使用递归和循环分别实现。输出结果如:4!=1*2*3*4=24

public class Test01 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		//输入一个数
		System.out.println("请输入你要判断的数据:");
		int n = input.nextInt();
		if(n>10 || n<1){
			System.out.println("限制输入的数据在1-10之间");
			System.exit(0);
		}
		String str = testString(n);
		long sum = factRec(n);//递归
		System.out.println(n+"!="+str+"="+sum);
		long sum2 = factfor(n);//for循环
		System.out.println(n+"!="+str+"="+sum2);
		
	}	
	//实现字符串的输出
	public static String testString(int n){
		String result = "";
		for (int i=1;i<=n;i++){
			result +=(i+"*");
		}
		return result.substring(0, result.length()-1);
	}	
	//递归实现
	public static long factRec(int n){
		if(n==1){
			return 1;
		}else{
			return n*factRec(n-1);
		}
	}	
	//for循环实现
	public static long factfor(int n){
		int sum = 1;
		for (int i = 1; i < n; i++) {
			sum += sum * i;
		}
		return sum;
	}
}
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jason的java世界

不要吝啬你的赞赏哦~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值