Как инициализировать массив в Julia, когда вы не знаете их размеры в первую очередь - PullRequest
2 голосов
/ 17 мая 2019

Я пытаюсь вычислить последовательность Фибоначчи до слагаемого, меньшего 4*10^6. Как определить размеры массива f, когда я не знаю, когда остановиться? В этом случае я определил методом проб и ошибок f = [1:32;].

k = 32
f = [1:k;]
for i in 1:k
    if i < 3
        f[i] = i
    elseif f[i] < 4*10^6
        f[i] = f[i-1] + f[i-2]
    else
        break
    end
end

1 Ответ

2 голосов
/ 17 мая 2019

Вам не нужно определять его заранее.

Просто используйте push!:

f = [1, 2]
while true
    fi = f[end] + f[end-1]
    fi < 4*10^6 ? push!(f, fi) : break
end

Примечание: в случае последовательности Фибоначчи ее относительно легко вычислить kиспользуя формулу, приведенную в Википедии в Расчет путем округления раздела.Также обычно вы определяете f[2] равным 1, а не 2, как в вашем вопросе.

...