类,域,方法的定义,方法的递归调用,递归求n!,递归求Fibonacci(斐波那契)

类的定义
class 类名
{
域的定义;
方法的定义;
}
域对应对象的属性,方法对应对象的行为,
一般地,方法依据属性的变化而定义,方法是对属性数据的处理
域的定义
域是对象的属性,也是对象的数据。
类中定义的每个域都有默认的初值,对于数值型域,其初值都为0;字符型域初值都为空(ASCII码);
布尔型的初值是false,对象类型的域的初值为null。可以在给定义时给域初始化,还可以在创建对象时利用静态初始化器或实例初始化器,构造方法对域初始化。
定义类时应该根据问题需要先抽象出对象的域。
方法的定义:
方法是对象的行为,在程序中是对对象的属性进行处理的工具。方法的定义形式如下:
方法类型 方法名 (形式参数)
{
方法体
}
方法类型就为返回值类型,若一个方法不返回就定义为void。返回语句为return +表达式;
若为void方法,不写返回语句,或者直接写return。
定义类中方法的时候,应该先进行方法抽象。方法抽象主要根据域的变化需求来定义方法,其次可以考虑类的其他需要定义必要的方法。
方法的使用中:一般的调用其他方法的方法称为主调方法,被其他方法调用的方法称为被调方法。定义方法时写的参数叫做形参,调用方法是写的参数叫做实参,实参可以是表达式,会先将表达式的值计算出来,然后在传给形参,而不是将整个表达式传给形参。
方法的递归调用
一个方法之间或间接的调用了自身,这种调用称为递归调用。通过递归调用,可以将问题简化为规模缩小了的同类问题的子问题。
使用方法递归调用时,应该满足的三个条件:

  • 每一次调用都会使问题得到简化
  • 前后调用应该有一定的关系,通常是前一次调用要为后一次调用准备好数据
  • 递归结束的条件,以避免无限递归调用

例子:
计算n!

public class Example5 {
 public static void main(String[] args) {
  int n=8;
  long f;
  f=fac(n);//调用fac()计算8!
  System.out.printf("%d!=%d\n",n,f);
  System.out.println(fac(5));
 }
 //fac方法。递归方法
 static long fac(int n) {
  if(n>1)
   return n*fac(n-1);
  //计算n!
  else
   return 1;
  //1!
 }
}

用递归方法找出Fibonacci(斐波那契)数列的第20个元素。

public class Example6{
 public static void main (String[] args) {
  System.out.println("第20个Fibonacci数:"+fib(20));
  //用+将一个字符串和一个数值连接成一个字符串后作为println()的参数
 }
 //定义fib
 static int fib (int n){
  if(n>2)//前两个之和
   return fib(n-1)+fib(n-2);//递归调用
  else
   return 1;
 }
}

递归方法效率低,占用的资源多

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值