Help to implement this equation with a recursive function:
(A [i-20] * (A [i-19] * (A [i-18] * ... * (A [i-1] + B [i-1]) + B [i-2] ) + B [i-3]) + ... + B [i-20])
Help to implement this equation with a recursive function:
(A [i-20] * (A [i-19] * (A [i-18] * ... * (A [i-1] + B [i-1]) + B [i-2] ) + B [i-3]) + ... + B [i-20])
Here is an iterative solution:
result = 1; for (int j = 1; j <= 20; j++) result = result * A[i - j] + B[i - j]; Recursion is not necessary in order not to hammer the stack in vain.
To warm up, here's a recursive solution:
double GetResultRec(size_t minidx, size_t maxidx) { if (minidx > maxidx) return 1.0; return A[minidx] * GetResultRec(minidx + 1, maxidx) + B[minidx]; } double result = GetResultRec(i - 20, i - 1); But the recursive, obviously supporting tail recursion:
double GetResultTailRec(size_t minidx, size_t maxidx, double factor, double addend) { if (minidx > maxidx) return factor + addend; return GetResultTailRec( minidx + 1, maxidx, factor * A[minidx], addend * factor + B[minidx]); } double result = GetResultTailRec(i - 20, i - 1, 1.0, 0.0); (Is there a simpler solution with tail recursion?)
Source: https://ru.stackoverflow.com/questions/416161/
All Articles