参数传递递归

参数传递:Java中参数的传递(此处存有争议,焦点是值传递和引用传递),此部分内容按照数据类型来分为值传递和引用传递
如果参数时基本数据类型,称之为值传递,传递过去的是值的拷贝,无论怎么改变这个拷贝,原值不会改变



public class TestParamValue {
       public static void main(String[] args) {
              int num = 3;
  
              System.out.println("Before change, num = " + num);
              changeData(n);
              System.out.println("After changeData(n), num= " + num);
    }
    public static void changeData(int n) { 
        n = 10;
    }
}
结果:3
         3

public class TestParamValue2 {
       public static void main(String[] args) {
              StringBuffer sb = new StringBuffer("Hello ");


              System.out.println("before change sb="+sb);
              change(sb);
             System.out.println("after change sb = "+sb);
       }
     public static void change(StringBuffer s){
             s.append("world");
     }
}


结果: 
Before change,num=Hello

After changeData(n), num= Hello World    




public class TestParamValue3{

       public static void main(String[] args) {
              StringBuffer sb = new StringBuffer("Hello ");
              System.out.println("before change sb="+sb);
              change(sb);
             System.out.println("after change sb = "+sb);
       }
     public static void change(StringBuffer s){
             s = new StringBuffer("hi ");
             s.append("world");
     }
}
  结果: 
Before change,num=Hello

After changeData(n), num= Hello    

递归调用

1递归就是在过程或函数里调用自身
2在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口
3递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序
4在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序

例子:package com.test;
public class Fbs {
static  int f(int num)
{
//assert(num >= 0); 
     if(num==0||num==1)
     {
     return num;
     }
     return f(num-1)+f(num-2);
}
 public static void main(String[] args) {
 
 for (int i = 0; i < 20; i++) {
  int num=f(i);
 
System.out.println(num);
}
 
  }
}



猜你喜欢

转载自blog.csdn.net/qq_15007327/article/details/75449022