階乗を求める (再帰)

明解C言語 入門編 > 8. いろいろなプログラムを作ってみよう >

階乗を求める (再帰)

C


#include <stdio.h>

int factorial(int n)
{
if (n > 0)
return (n * factorial(n -1));

return 1;
}

int main(int argc, char* argv[])
{
int n = 3;
printf("%dの階乗は%dです。\n", n, factorial(n));
}

実行結果


R:\>lesson063\Project1.exe
3の階乗は6です。

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function factorial(n:Integer):Integer;
begin
if n > 0 then
result := n * factorial(n -1)
else
result := 1;
end;

procedure main();
var
n: Integer;
begin
n := 3;
writeln(format('%dの階乗は%dです。', [n, factorial(n)]));
end;

begin
main;
end.

実行結果


S:\>lesson063\Project1.exe
3の階乗は6です。

Perl
sub factorial
{
    my ($n) = @_;

    return ($n * &factorial($n -1)) if ($n > 0);
    return 1;
}

$n = 3;
printf("%dの階乗は%dです。\n", $n, &factorial($n));

実行結果

L:\>perl lesson_08_063.pl
3の階乗は6です。

Ruby
def factorial(n)
    return (n * factorial(n -1)) if (n > 0)
    return 1
end

n = 3
printf("%dの階乗は%dです。\n", n, factorial(n))

実行結果

L:\>ruby l:\lesson_08_063.rb
3の階乗は6です。