1
代數表達式讓我們考慮定義的函數如下:在編譯時產生的d
f(n, x) = F(n, x, f(n-1, x))
f(0, x) = g(x)
在我的計劃中n
值始終在編譯時已知。我想優化我的程序並避免循環或遞歸調用此函數。應該在編譯時生成f(n, x)
的整個表達式,以便編譯器優化它。
直接解決方法是「手動」生成包含此表達式的字符串並使用mixin
語句。我不喜歡這種方式。
編譯器能夠/應該展開已知深度的遞歸嗎?
I.e.將下面的函數的方式進行優化,我想:
double f(uint n)(double x)
{
static if(n == 0)
return g(x);
else
return F(n, x, f!(n-1)(x));
}