>>591
>  n = 2000; a = 0; b = 1; While[n >= 1,
>  ...
論外なのでコメントできん。一冊以上Mathematicaの本を読め。

末尾再帰を用いた解答
f[n_] := f[n, 0, 1];
f[0, r1_ , r2_ ] := r1;
f[n_, r1_, r2_] := f[n - 1, r2, r1 + r2];

>  f[n_]:=a = 0; b = 1; While[n >= 1,
a = 0;のセミコロンで文が切れている。
f[n_] : = a
b = 1;
と入力しているのと同じだ。