Java程序设计实验(三)

实验三

1.用循环和递归两种方法实现 10的阶乘。
**代码如下:

package alltest;
//用循环和递归两种方法实现 10的阶乘
import java.util.Scanner;
public class test31201 {
   public static void main(String[] args) {
    	Scanner in= new Scanner(System.in);       //输入
    	System.out.println("请输入值(n>0):");
    	int n= in.nextInt();
    	System.out.println("利用循环的方法求"+n+"的阶乘为:"+"\t"+circleFactorial(n)+"\n");
    	System.out.println("利用递归的方法求"+n+"的阶乘为:"+"\t"+recursiveFactorial(n)+"\n");
   }
   
   private static int circleFactorial(int n) {  //利用循环的方法求阶乘
   	 int sum= 1;
    	for (int i=1; i<=n; i++) {
     		sum*=i;
    	}
    	return sum;
   }
   
   private static int recursiveFactorial(int n) {  //利用递归的方法求阶乘
    	int sum=1;
    	if(n==1) {
     		return 1;
    	}else {
     		sum=n*recursiveFactorial(n-1);
     	return sum;
    	}
   }
 }

**输出结果:
在这里插入图片描述

2.int[]num={92,5,7,45,76,103,44,23,7,98,100};
(利用递归,求数组中的最大值。)
**代码如下:(方法1:递归正着推)

package alltest;
public class test31203 { 
	public static void main(String[] args) {
  		int []num = {92,5,7,45,76,103,44,23,7,98,100}; 
  		System.out.println(maxnum(num,0));
  }
	public static int max(int a, int b) {    //定义一个比较两个数值大小的函数
 	 	return a>b ? a : b;
 }
 /*采用的递归思路是:若长度为L的数组最大值,
  即是求 数组前L-1个长度的最大值 和最后一个数组元素的相对较大值*/
public static int maxnum(int[] a, int begin) {
     	int length = a.length - begin;   //a.length指的是该数组的长度11
     	if(length == 1) {
     	return a[begin];
     	}else {
     	return max(a[begin], maxnum(a, begin+1));
	}
     }
}
 

对应的图解:
在这里插入图片描述

**代码如下:(方法2:递归反着推)

package alltest;

class two {

 private static int max(int a,int b){ //定义一个比较两个数值大小的函数
		return a>b?a:b; //Math.max(int a,int b)
}

 public static int maxNum(int[] num,int endindex){   
 /*采用的递归思路是:若求长度为L的数组最大值,
    即是求 数组前L-1个长度的最大值 和最后一个数组元素的相对较大值*/
   	if(endindex==0){  //从数组的第一个数开始比较 
     	   return num[0];
        }
          return max(num[endindex],maxNum(num,endindex-1));//Math.max();
 }

 public static void main(String[] args){
        int num[]= {92,5,7,45,76,103,44,23,7,98,100};
 	System.out.print(maxNum(num,num.length-1));//调用的就是递归定义的方法
 }
}
/*maxNum(num,10)//总共是11个元素,所以下标-1
 第一次的return:          max(num[10],maxNum(num,9))
 第二次                        max(num[9],maxNum(num,8)) 
 第三次                            max(num[8],,maxNum(num,7)) 
                         92<-- max(num[3],maxNum(num,2)) 
                           92<--max(num[2],maxNum(num,1)) 
    			     92<--max(num[1],maxNum(num,0);)
                                 92
*/

**代码如下:(方法3:数组中最大值 k存储最大元素的值)

public static void main(String[] args) {
 int[]num={92,5,7,45,76,103,44,23,7,98,100};
 int i, k;
 k=num[0];
 for( i=1;i<=10;i++) {
  if (num[i]>k) {
   k=num[i];
  } 
 }
 System.out.println("数组中最大的值为"+k);
}
}

**代码如下:(方法4:正着推的程序改写,重载)

package hello;
import java.util.Scanner;
//java递归实现求数组最大值
public class three {
	public static void main(String []args){
         	Scanner sc = new Scanner(System.in);
        	 int n;
         	int []a;
         	a = new int[100];
         	n = sc.nextInt();
         	for(int i=0;i<n;i++){
             	a[i] = sc.nextInt();
        	 }
         	System.out.println(max(a,n));
     	}
 	static int max(int []arr,int n){   //方法重载
        	return max(arr,0,n);
     	}
	static int max(int []arr,int from,int n){  //方法重载
         	if(from==n-1){
             		return arr[from];   //终止语句
         	}
                else{
             		return Math.max(arr[from],max(arr,from+1,n));//递归关键句,正着推
         }
     }
 }

实验截图如下:
在这里插入图片描述

图书详细描述: 本书将Java语言作为大学生的计算机程序设计入门语言,其特色是内容全面、深入浅出、辅助教材立体配套。不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计方法贯穿始终,基础性和实用性并重。本书不仅能使读者掌握Java语言,而且能够让读者对现实世界中较简单的问题及其解决方法用计算机语言进行描述。    本书既可供大专院校用作“Java语言程序设计”课程教材,也可供Java 爱好者作为入门的自学教材。 目录第1章 Java语言基础知识 1.1 Java语言与面向对象的程序设计  1.1.1 面向对象的程序设计思想  1.1.2 Java语言的特点  1.1.3 Java类库 1.2 Java程序概述  1.2.1 Java开发环境  1.2.2 Application举例  1.2.3 Applet举例  1.2.4 Servlet举例  1.2.5 JSP和JavaBean举例 1.3 基本数据类型与表达式  1.3.1 变量与常量  1.3.2 基本数据类型  1.3.3 表达式与运算符  1.3.4 类型转换 1.4 数组的概念 1.5 数组的创建和引用  1.5.1 数组的声明  1.5.2 数组的创建  1.5.3 数组元素的初始化  1.5.4 数组的引用  1.5.5 多维数组 1.6 本章小结 习题第2章 类与对象的基本概念 2.1 面向对象的程序设计方法概述  2.1.1 抽象  2.1.2 封装  2.1.3 继承  2.1.4 多态 2.2 类与对象  2.2.1 类的声明  2.2.2 对象的声明与引用  2.2.3 数据成员  2.2.4 方法成员  2.2.5 类的组织——包的概念  2.2.6 类的访问控制  2.2.7 类成员的访问控制 2.3 对象初始化和回收  2.3.1 构造方法  2.3.2 内存回收技术 2.4 应用举例  2.4.1 声明BankAccount类  2.4.2 声明toString()方法  2.4.3 声明存取款方法  2.4.4 使用DecimalFormat类  2.4.5 声明类方法生成特殊的实例  2.4.6 声明类变量 2.5 UML简介  2.5.1 类图  2.5.2 对象图 2.6 本章小结 习题第3章 类的方法 3.1 方法的控制流程  3.1.1 if选择结构  3.1.2 switch选择结构  3.1.3 for循环结构  3.1.4 while语句  3.1.5 do while语句  3.1.6 break语句  3.1.7 continue语句 3.2 异常处理简介  3.2.1 异常处理的意义  3.2.2 错误的分类  3.2.3 异常的处理  3.2.4 生成异常对象  3.2.5 声明自己的异常类 3.3 方法的重载 3.4 本章小结 习题第4章 类的重用第5章 接口与多态第6章 输入输出流第7章 对象群体的组织第8章 多线程第9章 图形用户界面第10章 JDBC与数据库访问第11章 Servlet程序设计第12章 JSP程序设计参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值