Ошибка в пользовательских функциях с 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