• 2-18 分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式


    (1)首先建立一个Java项目和Java的类并命名为“阶乘计算”

    (2)由于要调用输入函数java.util.Scanner.nextInt()(这个函数是专门提供输入类型为整形的数据),所以要导入包java.util.Scanner,Java语句为import java.util.Scanner

    (3)建立一个主函数,新建一个 参数为System.in的Scanner对象 其中名称为 sc,System.in参数是键盘输入内容,Java语句为:Scanner sc = new Scanner(System.in);

    (4)设置提示输入n,然后创建一个int类型来传入参数n,然后设置一些中间变量,具体语句是:System.out.print("请输入n:");int num = sc.nextInt();int i=1,n=num,sum=1;其中第二个语句表示将输入的参数赋值给整形i

    (5)编写while循环阶乘代码,由于要输出阶乘算式,所以循环中加入了输出语句,这里的代码和c语言相似,不再具体的介绍

    (6)do-while和for循环语句与while语句类似,主要是递归方法,首先要在类外建立一个递归方法的类,然后在主函数内调用递归方法并传入参数(我在调用递归方法时添加了异常机制,即如果出现错误就中断操作,并输出异常)

    (7)运行程序,输入阶乘n为8,代码和结果如图:

    总结心得:

    (1)首次学会了调用输入包java.util.Scanner,并掌握了nextInt()函数

    (2)为满足输出阶乘算式,必须在每次循环中输出当前循环的乘数以及乘号,最后在添上计算结果

    (3)在建立递归函数时,必须要先构造函数,即BigInteger(String val);要注意与c++的构造函数的区别,同时开头要导入包java.math.*

    (4)由于阶乘数据量比较大,所以最好要进行异常处理,避免程序卡死

    (5)要注意区分while,do-while和for循环中循环次数的控制

    源代码如下:

     1 import java.util.Scanner;
     2 import java.math.*;
     3 public class 阶乘 {
     4     public static void main(String[] args){
     5         Scanner sc = new Scanner(System.in);
     6         System.out.print("请输入n:");
     7         int num = sc.nextInt();
     8         int i=1,n=num,sum=1;
     9         System.out.print("while语句的阶乘算式:1");
    10         while(i<n){
    11             i+=1;
    12             sum*=i;
    13             System.out.print("*"+i);
    14         }
    15         System.out.println("="+sum);
    16         
    17         i=1;sum=1;
    18         System.out.print("do-while语句的阶乘算式:1");
    19         do{
    20             i+=1;
    21             sum*=i;
    22             System.out.print("*"+i);
    23         }while(i<n);
    24         System.out.println("="+sum);
    25         
    26         
    27         System.out.print("for语句的阶乘算式:1");
    28         for(i=2,sum=1;i<=n;i+=1){
    29             sum*=i;
    30             System.out.print("*"+i);
    31         }
    32         System.out.println("="+sum);
    33         
    34         
    35         阶乘 test = new 阶乘();
    36         System.out.print("递归方式的阶乘算式:1");
    37         for(i=2,sum=1;i<=n;i+=1){
    38             
    39             System.out.print("*"+i);
    40         }
    41         try {
    42             System.out.println("="+test.bigsum(num));
    43         } catch (Exception e) {
    44             // TODO Auto-generated catch block
    45             e.printStackTrace();
    46         }
    47 
    48             
    49         }
    50     public BigInteger bigsum(int i) {
    51         if (i == 1) {
    52             return BigInteger.ONE;
    53         }
    54         return BigInteger.valueOf(i).multiply(bigsum(i-1));
    55     }
    56 }
  • 相关阅读:
    敏捷个人2013.06月份户外活动报道:奥森健步读书分享会
    敏友的【敏捷个人】有感(16): 成为一个敏捷的人
    #敏捷个人# 每日认识101(14):成为一个敏捷个人
    4周的敏捷生活练习,你来吗?
    OKGo vs RxHttpUtils ...
    Android开发之EditText多行文本输入
    android开发中json与java对象相互转换
    android 调试崩溃Unable to instantiate application的解决方法
    Android.mk 使用说明
    几种知名开源富文本编辑器记录和对比(仅供参考)
  • 原文地址:https://www.cnblogs.com/fjcy/p/10556836.html
Copyright © 2020-2023  润新知