前兩天去廣州千聊面試遇到了這樣一道編程題。
觀察生成規則0、5、5、10、15、25、40、65、105、165、270…。遞歸實現第50位數是多少?
太久沒有寫遞歸了當時沒寫出來。現在回想起來就是以前在學校寫過的數兔子問題嘛!
關於數兔子問題下面有一篇博客可以參考:
https://www.cnblogs.com/ngnntds03/p/10766646.html
好了下面是我後來回到家後對問題的編程實現上代碼:
package com.alibaba.digui;import java.util.concurrent.CountDownLatch;
/**
* Created by IntelliJ IDEA.
* User: PeterLi * Date: 2019/9/21
* Time: 0:29
*/
public class Test1 {
private static int count = 3;
public static void main(String[] args) {
digui(0L,5L,48);
}
public static Long digui(Long num1,Long num2,int num50){
if(num50 == 0){
return num1 + num2;
}
System.out.println((count++)+" " +(num1 + num2)+" ");
return digui(num1,num2 + num2,num50-1);
}
}
以下是我參考了對遞歸算法的一些理解:
[外鏈圖片轉存失敗(img-A28vh5zb-1569042778424)(C:\Users\Administrator\Desktop\面試\20170615220708910.png)]