尾遞歸

什麼是尾遞歸呢?(tail recursion), 顧名思議,就是一種「不同的」遞歸,說到它的不同,就得先說說通常的遞歸。對於通常的遞歸,好比下面的求階乘,教科書上會告訴咱們,若是這個函數調用的深度太深,很容易會有爆棧的危險。java

尾遞歸就能夠大大縮小了棧的深度,能夠出棧瀏覽器

例題:切面條 ---藍橋杯函數

標題:切面條spa

一根高筋拉麪,中間切一刀,能夠獲得2根麪條。code

若是先對摺1次,中間切一刀,能夠獲得3根麪條。blog

若是連續對摺2次,中間切一刀,能夠獲得5根麪條。遞歸

那麼,連續對摺10次,中間切一刀,會獲得多少麪條呢?io

答案是個整數,請經過瀏覽器提交答案。不要填寫任何多餘的內容。class

package demo2;

import java.math.BigInteger;
import java.util.*;

public class Main8 {
    public static int f(int n,int r){
        if(n==0)
            return r;
         
         
            return f(n-1,2*r-1);
         
    }
     
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         int n = 10;
         System.out.println(f(10,2));
    }

}
相關文章
相關標籤/搜索