在遞歸內求和:它是否總是產生StackOverflow錯誤?在遞歸內求和
public final static float getAlpha(int t, int i, int N, float[] P, float[][] B, float[][] A, int[] O)
{
float alpha;
if (t==1)
{
alpha = P[i] * B[i][O[0] - 1];
}
else
{
float sum = 0;
int k;
for (k=0; k < N; k++){
sum = sum + (getAlpha(t-1, k, N, P, B, A, O) * A[k][i]);
}
alpha = sum * B[i][O[0] - 1];
}
return alpha;
}
我得到的錯誤行:
sum = sum + (getAlpha(t-1, k, N, P, B, A, O) * A[k][i]);
有任何創造性的解決方案?
'StackOverflow'將始終發生,如果您的遞歸是**無限**。 – 2013-05-10 23:11:16
N有多大?小N發生? – arynaq 2013-05-10 23:15:08
T是否可能作爲非正數開始?即如果t = 0,它不會終止。 – user949300 2013-05-10 23:16:16