由於計算機棧的記憶體有限,而函式遞迴會呼叫到棧,所以函式的遞迴深度有限
用以下的**可以求出在本機最大遞迴深度,用二分法測出來的。
python和c++差這麼多的原因可能是編譯器分配的棧記憶體不同:
棧的記憶體可以自己調整:
python:
def
get_dep
(num)
:if num ==1:
return
1else
:return num * get_dep(num-1)
print
(get_dep(
998)
)#最大為998
c++:
#include
using
namespace std;
typedef
long
long ll;
ll get_dep
(ll x)
intmain()
讓計算機很快地求出a b c
讓計算機很快地求出ab 暴力相乘的話,電腦要計算 b 次。用快速冪,計算次數在 log 2 b 級別,很實用。原理 i 1 如果將 a 自乘一次,就會變成 a2 再把 a2 自乘一次就會變成 a4 然後是 a 8 自乘 n 次的結果是 a 2 n 2 axay ax y,這個容易。3 將 b轉化為二...
電腦科學 演算法 遞迴
本系列文章在github steveneco以及warrenryan同步更新 程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的...
計算機視覺 深度學習基礎
與神經網路的區別 傳統一般三層以內,深度可達上千層 傳統通常是全連線,深度形式多樣 共享權值,跨層的反饋等 目標函式 均方誤差 交叉熵 交叉熵能在深度學習模型下快速提高精度 為了避免交叉熵出現0,使用softmax層來突出最大值並轉換成概率 激勵函式 sigmoid relu 當神經元一層層疊加之後...