16.02.2017, 14:31 | #36 |
Участник
|
А в Qlik Sense с помощью кода:
X++: Let n = 50; For v = 0 to n If v = 0 then Let f = 0; ElseIf v = 1 then Let f = 1; Else Let f = f_2 + f_1; End If; Fibonacci: Load * Inline [ N, F $(v), $(f) ]; Let f_2 = f_1; Let f_1 = f; Next А чтобы вычислить n-значение можно использовать матричную алгебру: X++: Let f00 = 1; Let f01 = 0; Let f10 = 0; Let f11 = 1; Let m00 = 1; Let m01 = 1; Let m10 = 1; Let m11 = 0; Let v = n; Do while v > 0 If Mod(v, 2) = 1 then Let a = f00 * m00 + f01 * m10; Let b = f00 * m01 + f01 * m11; Let c = f10 * m00 + f11 * m01; Let d = f10 * m01 + f11 * m11; Let f00 = a; Let f01 = b; Let f10 = c; Let f11 = d; End If Let v = Div(v, 2); Let a = m00 * m00 + m01 * m10; Let b = m00 * m01 + m01 * m11; Let c = m10 * m00 + m11 * m01; Let d = m10 * m01 + m11 * m11; Let m00 = a; Let m01 = b; Let m10 = c; Let m11 = d; Loop Fibonacci: Load * Inline [ N, F $(v), $(f10) ]; Последний раз редактировалось AP-1055D; 16.02.2017 в 16:00. |
|