Ошибка в пользовательских функциях с Gp/Pari

Я пытаюсь работать над изучением языка программирования Gp Pari, и я работаю над проблемами проекта Эйлера, и я не могу заставить его правильно скомпилироваться:(Предполагается, что список всех чисел Фибоначчи меньше по размеру чем какой-то вход п.

вот код,

Euler_2(n) = 
(
x  = 0;
y = 0;
fib = listcreate(n);
listput(fib,1);
listput(fib,1);
a = True;
while(a, 
{if( x > n,
a = False;
);
x = fib[#fib] + fib[#fib-1];
listput(fib,x);
}); \\ end the while loop
)\\ end the function

Я совершенно новичок в этом языке (я знаю немало Python). Любые полезные комментарии будут великолепны! Заранее спасибо!

1 ответ

Решение

Вам нужно заключить код в скобки, а не в скобки, чтобы использовать несколько строк. (Вы также можете использовать обратную косую черту в конце строки, как предлагает Шон в комментарии, но это быстро устареет.) Быстрый обзор кода:

Euler_2(n) = 
{
  \\ always declare lexical variables with my()
  my(x = 0, y = 0, fib = List([1, 1]), a = 1);
  while(1, \\ loop forever 
    x = fib[#fib] + fib[#fib-1];
    listput(fib,x);
    if(x > n, break);
  ); \\ end the while loop
  Vec(fib); \\ not sure what you wanted to return -- this returns the list, converted to a vector
} \\ end the function
Другие вопросы по тегам