Bem confuso o seu código e como não tenho lá muito tempo para ficar tentando entender, eu lhe pergunto…
Porque não usa o código que eu fiz, ele efetua a rotina que deseja corretamente, já rodou ele? 
Outro detalhe…eu coloquei no for <30 porque havia dito que queria que mostrasse a sequência de fibonacci até 30.
Como funciona o for ali, ele inicia a variavél int i em zero, por isso i=0 e a cada vez que ele executar o bloco de código que está contido dentro dele, ou seja, dentro do { seu codigo } ele incrementa (soma) o i de um em um, ou seja, i = i +1 (i++).
Sobre isso:
Só não entendi o for e a linha 20 e 21.
Nesta linha você diz que o valor anterior da sequência passa a ser o atual, afinal, você precisa “andar” na sequencia, ou seja, se o seu anterior era 2, ele deve passar a ser qual valor de acordo com fibonacci? Isso mesmo, 3, sendo que o 3 é o valor atual que você tem armazenado, sendo assim, o seu anterior assume o valor atual e passa a ser 3 e o seu atual deve assumir o valor do próximo número da sequência de fibonacci, ou seja, ele passa a ser 5 e assim sucessivamente. O que eu quero dizer é que o seu valor atual deve sempre guardar o valor da sequencia de fibonacci que ele parou antes de continuar percorrendo a sequência, ou seja, incrementando o i (ou finalizar o loop (for)). Entendeu? 
Espero ter ajudado. Abraços! 