一、 递归
一个调用它本身的函数称为递归(Recursive)函数。在编写程序时,也常来处理某些问题,而这些问题通常有相同的规则,下面将举例说明。
n 阶乘
n!=n ×(n-1)!
(n-1)!=(n-1)×(n-2)!
(n-2)!=(n-2)×(n-3)!
…
1!=1
从上述公式可得知其相同的规则为:某一数A的阶乘为本身A乘以(A-1)的阶乘。其程序如下:
public int fun(int n){
int a;
if(n==1)
a=1;
else
a=n * fun (n-1);
return a;
}
在编写递归程序时,记住必须有一个结束点,可以使函数往上追溯直到结束。如上例中,当 n= 1 时,1!= 1 即为其结束点。
程序解说
下图表示n!阶乘,假设n=4,如图
二、 排序
(冒泡排序,选择排序,插入排序,归并排序,快速排序,希尔排序)
1、冒泡排序:
冒泡排序(Bubble Sont)又称为交换排序(Interchange Sont)。相邻两个相比,如果前一个比后一个大时,则互相对调。通常有 n 个数据时需要做n+1次扫描,一次扫描完后,数据量减少 1,当没有数据需要对调时,就表示已好排好序了。
例如,有 5 个数据分别是20,2,25,56,15 冒泡排序的步骤如下;
冒泡排序一样是稳定的,最坏时间与平均时间都是 O(n²),所需要额外空间也很少。
代码解释:
public class test {
public static void main(String[] args) {
int a[]={
20,2,25,56,15};
talk(a);
}
public static void talk(int a[]){
p(a);//打印出原来的数组顺序
int i,j,temp;
//让数据两两作对比,将小的置于前
for( i=0;i<a.length;i++