Показать сообщение отдельно
Старый 16.02.2017, 14:31   #108  
AP-1055D is offline
AP-1055D
Участник
 
349 / 92 (4) ++++
Регистрация: 01.06.2011
А в 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.