在递归内求和:它是否总是产生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