読者です 読者をやめる 読者になる 読者になる

Scheme(Gauche)でフィボナッチ数列

Lisp

こんな感じでしょうか。

(define (sub a b co n)
    (if (= co n) a
         (begin
         (print a)
         (sub (+ a b) a (+ co 1) n))))

(define (fibonatti n)
    (print (sub 1 1 1 n)))

(fibonatti 10)

Scheme って while 文も for 文もないのですね。繰り返しは do 文でやるか、再帰を使うと。

上は次の Ruby コードと同等です。

def sub(a, b, co, n)
  return a if co == n
  puts a
  sub(a + b, a, co + 1, n)
end

def fibonatti(n)
  puts sub(1, 1, 1, n)
end

fibonatti(10)