不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

i042416發表於2018-11-20

今天我的一位同事在微信群裡發了一張圖片,勾起了我的好奇心:不同程式語言支援的函式遞迴呼叫的最大巢狀層數是?

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

Java 1.8

private static void recur(int i){
  System.out.println("Stack level: " + i);
  recur(++i);
}

測試結果:8644

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

Javascript in Chrome

Chrome版本:

Version 70.0.3538.102 (Official Build) (64-bit)

function a(i){   console.log("stack level: " + i)
   a(i+1);
}
a(0);

測試結果:11412

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

JavaScript in nodejs

nodejs version: v8.11.3

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

測試結果:11213

Golang

版本:

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

測試結果:3947556

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

ABAP

data: lv_temp type int4.
form recur using iv type int4.
  sy-index = iv.
  lv_temp = iv + 1.
  perform recur using lv_temp .
endform.
START-OF-SELECTION.
   perform recur using 0.

實際上是out-of-memory錯誤。

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

測試結果:12258206

不同程式語言在發生stackoverflow之前支援的呼叫棧最大巢狀層數

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2220727/,如需轉載,請註明出處,否則將追究法律責任。

相關文章