Custom McCarthy sequence

Generate the first one hundred and twenty numbers (starting with n=1). See here for some inspiration: http://en.wikipedia.org/wiki/McCarthy_91_function

Input

" Humm... :so%

" Custom McCarthy 91 function
" M(n) = { n          if n > 97
"        { M(M(n+1))  if n <= 97
function! Mc98(n)
  if a:n > 97
    return a:n
  else
    return Mc98(Mc98(a:n + 1))
  endif
endfunction

function! Mc98Line()
  let l = getline('.')
  call setline('.', Mc98(l))
endfunction

" Humm...
"command! -range Mc98Cmd ,call Mc98Line()
nmap M ciw=Mc98(")
"0put=range(1,120)

Output

98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120