А в 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)
];