java递归算法实验报告-递归树 算法
课程名称: Java程序设计成绩评定:
实验项目名称:实验6:算法设计指导教师:
学生姓名:学号:专业班级:
实验项目类型:基础实验地点:实验时间:
一、实验目的与要求:
1、掌握常用的查找算法
2、掌握常用的排序算法
3、掌握递归的应用
二、实验内容:
1、排序编程题
已有一个升序排列的整数数组(含20个整数),要求从键盘输入一个整数后,将该数插入数组java递归算法实验报告,并保持升序,输出该数组的数值验证程序的正确性。
import java.util.Scanner;
public class InsertApp {
public static void main(String[] args) {
int[] r={5,7,8,11,13,15,16,18,21,22,25,27,29,31,32,33,36,39,43,44};
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
sc.close();
int s[]=new int[21];
System.arraycopy(r,0,s,0,r.length);
s[20]=t;
System.out.println("未排序的数组为:");
for(int i=0;i
{System.out.printf("%d ",s[i]);}
System.out.printf("\n");
int i,j,temp;
for(i=1;i
{temp=s[i];j=i-1;
while(j>=0&&s[j]>temp)
{s[j+1]=s[j];
j--;}
s[j+1]=temp;}
System.out.println("排好序的数组为:");
for(i=0;i
{System.out.printf("%d ",s[i]);}}
}
输入23,输出:
2、特殊数列编程题
输出所有的水仙花数,所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如,153=13+53+33。
public class sx{
public static void main(String[] args){
int x,y,z;
long u,i;
for( x=1;x
{for( y=0;y
{for( z=0;z
{u=x*x*x+y*y*y+z*z*z;
i=x*100+y*10+z;
if(u==i)
System.out.println(i);}}}
}}
3、分析程序,回答题后问题
public class BinarySearch {
public static void main(String[] args) {
int[] r={5,13,19,21,37,56,64,75,80,88,92};
int key=56;
int low=0,high=r.length-1,mid=-1;
while(lowkey)
high=mid-1;
else
low=mid+1;}
if(low>high){
System.out.println("not found!");
}else{
System.out.println("found at "+mid);
}}}
1)当key=21时,写出每次循环low、high和mid以及运行输出结果的值
2)当key=22时,写出每次循环low、high和mid以及运行输出结果的值
3)当key=64时,写出每次循环low、high和mid以及运行输出结果的值
修改程序,使每次循环后输出high、mid、low
while(lowkey)
{ high=mid-1;
System.out.println("high="+high);
System.out.println("mid="+mid);
System.out.println("low="+low);}
else
{ low=mid+1;
System.out.println("high="+high);
System.out.println("mid="+mid);
System.out.println("low="+low);}
}
1、当key=21时,输出:
2、当key=22时,输出:
3、当key=64时java递归算法实验报告,输出:
4、递归编程题
用递归的方法求∑
=
20
1
!
n
n(即求1!+2!+3!+….+20!),通过该编程题了解递归的用法。
public class Recu{
static long fun(int n){
if (n==1)
return 1;
else
return n*fun(n-1);
}
public static void main(String[] args){
long sum=0;
long s;
for(int i=1;i