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

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

様々なプログラミング言語で再帰の階乗を書いてみるメモ

Golang Haskell Java Javascript Lisp PHP Python Ruby

変更

Haskell

fact :: Int -> Int
fact 0 = 1
fact n = n * fact (n - 1)

main :: IO ()
main = do
  print (fact 10)
  -- > 3628800

Python

def fact(n):
    if n == 0:
        return 1
    return n * fact(n - 1)

print(fact(10))
#-> 3628800

Ruby

def fact n
  if n == 0
    1
  else
      n * fact(n - 1)
  end
end

puts fact 10
#-> 3628800

Java

public class Fact {
    static int fact(int n) {
        if (n == 0) {
            return 1;
        } else {
            return n * fact(n - 1);
        }
    }

    public static void main(String[] args) {
        System.out.println(fact(10));
        //-> 3628800
    }
}

Javascript

function fact(n) {
  if (n === 0) {
    return 1;
  } else {
    return n * fact(n - 1);
  }
}

console.log(fact(10));
//-> 3628800

Emacs Lisp

(defun fact (n)
  (cond ((= n 0)
         1)
        (t
         (* n (fact (- n 1))))
        ))

(fact 10)
;;-> 3628800

Common Lisp

(defun fact(n)
  (if (<= n 1)
      1
    (* n (fact (- n 1)))))

(print (fact 10))
;;-> 3628800

Go

package main
import ("fmt")

func fact(n int) int {
	if n == 0 {
		return 1
	}
	return n * fact(n - 1)
}

func main() {
	fmt.Println(fact(10))
	//-> 3628800
}

PHP

<?php

function fact($n)
{
    if ($n == 0) {
        return 1;
    }
    return $n * fact($n - 1);
}

echo fact(10);
//-> 3628800