11.if和switch的异同
- 相同之处:
- 不同之处:
- switch更适用于多分支情况,就是有很多种情况需要判断处理,判断条件类型单一,只有一个入口,在分支执行完后(如果没有break跳出),不加判断继续执行下去。
- if—elseif---else多分枝主要适用于分支较少的分支结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行
- switch为等值判断,(不允许比如>= <=),而if为等值和区间都可以,if的使用范围大。
12.while和do—while的区别
- while先判断后执行,第一次判断为false , 循环体一次都不执行。
- do while先执行 后判断,最少执行1次。
- 如果while循环第一次判断为true, 则两种循环没有区别。
13.return 、break和continue的区别和作用
- return:return关键字并不是专门用于跳出循环的,return的功能是结束一个方法。一旦在循环体内执行到一个return语句,return语句将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
- break:break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码。 break不仅可以结束其所在的循环,还可结束其外层循环。此时需要在break后紧跟一个标签,这个标签用于标识一个外层循环。Java中的标签就是一个紧跟着英文冒号(:)的标识符。且它必须放在循环语句之前才有作用。
- continue:continue的功能和break有点类似,区别是continue只是中止本次循环,接着开始下一次循环。而break则是完全中止循环。
- 总结:return:结束整个方法;break:退出循环;continue:跳过正在运行的循环,接着循环。
14.请使用递归算法计算n!
- 一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。 自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。 亦即n!=1×2×3×...×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
- 注:Recursion 读法:[rɪˈkɜ:rʃn] 递归
import java.util.Scanner;
public class Recursion {
public static int digui(int n){//递归算法(核心)
if (n <= 1) {
return 1;
}else {
return n * digui( n - 1 );
}
}
public static void main(String args[]){
System.out.println("请输入需要求阶乘的数字(请输入一个整数):");
Scanner in = new Scanner(System.in);
int a = Integer.parseInt(in.nextLine());
System.out.println(digui(a));
}
}