return 1;
} }
B:间接递归:指函数中调用了其他函数,而该其他函数有调用了本函数。
示例2:用间接递归来计算上述斐波那契数列。
程序代码: public class Test {
public static void main(String args[]) {
int x1 = 1; int sum = 0; int n = 7;
for (int i = 1; i <= n; i++) {
x1 = func1(i); sum = sum + x1;
}
System.out.println(\
}
public static int func1(int a){
int b; b=func2(a); return b;
}
public static int func2(int b) {
if (b> 2)
return (func1(b - 1) + func1(b - 2));
else return 1;
} }
3、为什么要用递归函数?递归函数的缺点是什么? 答:递归的目的是简化程序设计,使程序易读。 示例3:下面不用递归函数继续来计算上述斐波那契数列。
程序代码: public class Test {
public static void main(String args[]) {
int n=7; int a=1, b=1, temp;
int sum=2;
for(int i=3; i<=n; i++){ temp=a+b; a=b; b=temp; sum=sum+temp;
}
System.out.println(\
} }
从上面例子我们可以发现虽然非递归函数效率高,但较难编程,可读性较差。递归函数的缺点是增加
了系统开销,也就是说,每递归一次,栈内存就多占用一截。
4、递归的条件:
答:需有完成任务的语句,需满足递归的要求(减小而不是发散)。
5、递归进阶: 示例4:
编程求解:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按次规律,第n年时有多少头
母牛? 程序代码: public class Test3 {
public static void main(String args[]) {
int n=10; //要查看的年数
System.out.println(\共有\头小母牛!\
}
public static int cattle(int n){
if(n<=0) return 0; if(n<=3) return 1;
return cattle(n-1)+ cattle(n-3);//此处是递归要好好理解。
} }
规律:此类问题的递归函数为:
如果要求的是从出生起第四个年头,则递归函数为cattle(n-1)+ cattle(n-3), 如果要求的是从出生起第五个年头,则递归函数为cattle(n-1)+ cattle(n-4),
。。。。
java 词汇表速查
Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。
Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。
Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的
访问控制属性。
Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字. Anonymous inner classes 匿名内部类:匿名内部类是没有类名的局部内部类。
API 应用程序接口:提供特定功能的一组相关的类和方法的集合。 Array 数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。
Automatic variables 自动变量:也称为方法局部变量method local variables,声明在方法体中
的变量
AWT抽象窗口工具集:一个独立的API平台提供用户界面功能。
Base class 基类:即被扩展继承的类。
Blocked state 阻塞状态:当一个线程等待资源时即处于阻塞状态。阻塞状态不使用处理器资源 Call stack 调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。
Casting 类型转换 :即一个类型到另一个类型的转换
char 字符:容纳单字符的一种基本数据类型。 Child class 子类:见继承类Derived class Class 类:面向对象中的最基本、最重要的定义类型。
Class members 类成员:定义在类一级的变量,包括实例变量和静态变量。
Class methods 类方法:类方法通常是指的静态方法 Class variable 类变量:见静态变量Static variable
Collection 容器类:容器类可以看作是一种可以储存其他对象的对象
Collection interface 容器类接口:容器类接口定义了一个对所有容器类的公共接口。 Collections framework 容器类构架:接口、实现和算法三个元素构成了容器类的架构。
Constructor 构造函数:在对象创建或者实例化时候被调用的方法。 Containers容器:容器是一种特殊的组件,它可以容纳其他组件。
Declaration 声明:声明即是在源文件中描述类、接口、方法、包或者变量的语法。
Derived class 继承类:继承类是扩展继承某个类的类。 Encapsulation 封装性:封装性体现了面向对象程序设计的一个特性 Event classes 事件类:所有的事件类都定义在java.awt.event包中。
Event sources 事件源:产生事件的组件或对象称为事件源。
Exception 异常:异常是一种对象类型,异常还指应用中发生的一种非标准流程情况,即异常状态 Extensibility扩展性:扩展性指的是面向对象程序中,不需要重写代码和重新设计,能容易的
增强源设计的功能。
Finalizer 收尾:每个类都有一个特殊的方法finalizer,它不能被直接调用,而被JVM在适当的
时候调用,通常用来处理一些清理资源的工作,因此称为收尾机制。
Garbage collection 垃圾回收机制:当需要分配的内存空间不再使用的时候,JVM将调用垃圾
回收机制来回收内存空间。
Guarded region 监控区域:一段用来监控错误产生的代码。
Heap堆:Java中管理内存的结构称作堆。
Identifiers 标识符:即指定类、方法、变量的名字。注意Java是大小写敏感的语言。 Import statement 引入语法:引入语法允许你可以不使用某个类的全名就可以参考这个类。 Inheritance 继承:继承是面向对象程序设计的重要特点,它是一种处理方法,通过这一方法,
一个对象可以获得另一个对象的特征。
Inner classes 内部类:内部类与一般的类相似,只是它被声明在类的内部,或者甚至某个
类方法体中。
Instance 实例:类实例化以后成为一个对象。