由于计算机栈的内存有限,而函数递归会调用到栈,所以函数的递归深度有限
用以下的代码可以求出在本机最大递归深度,用二分法测出来的。
python和c++差这么多的原因可能是编译器分配的栈内存不同:
栈的内存可以自己调整:
Python:
def get_dep(num):
if num == 1:
return 1
else:
return num * get_dep(num-1)
print(get_dep(998))#最大为998
C++:
#include <iostream>
using namespace std;
typedef long long ll;
ll get_dep(ll x)
{
if(x==1) return 1;
else
return x+get_dep(x-1);
}
int main()
{
cout << get_dep(43429) << endl;///最大为43429
return 0;
}