george
моя функция получилась быстрее раз в 100 :-)
Гы. Вы хотели сделать простую числодробильню. А тест по ссылке измеряет генерацию объектов и скорость доступа к методам, проверяет язык на умение держать рекурсию. Числодробильные тесты не интересны в виду узости решаемых задач. К примеру, такой код на f#
let rec fib i =
match i with
| 1 | 2 -> 1
| i -> fib(i-1) + fib(i-2);;
посчитал за 1.6 сек. и выдал результат 102334155, а ваш код
george
def fib(i as int):
sum = i + 1
while --i > 2: sum += i
return sum
выдал 818, что ошибка - числа Фибоначчи, это последовательность, в которой каждое последующее число равно сумме двух предыдущих чисел. Причем Фибонначи растет очень быстро, быстрее только Аккерман. Правильней будет так:
def fib(i):
if(i <= 2):
return 1
return fib(i-1)+fib(i-2)
Правда, мой Воо отказался его посчитать :(, выдав такое :
Boo Compiler version 0.9.0.3203 (CLR v2.0.50727.3053)
fib1.boo(6,12): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,12): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,21): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(6,21): BCE0070: Definition of 'Fib1Module.fib' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,7): BCE0070: Definition of 'Fib1Module.Main' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,7): BCE0070: Definition of 'Fib1Module.Main' depends on 'Fib1Module.fib' whose type could not be resolved because of a cycle. Explicitly declare the type of either one to break the cycle.
fib1.boo(10,1): BCE0023: No appropriate version of 'System.Console.WriteLine' for the argument list '(unknown)' was found.
7 error(s).
Судя по всему не держит Воо рекурсии. А Python посчитал ;). Так что я вам тут не советчик.
george
задачи, предложенные тобой, тоскливые, как по мне. вот подумал, как на счет каталогизатора музыки.
Как знаешь. Каталогизатор музыки у меня есть :)