
Japanese: 
再帰的定義を使って単語を作る方法と
祖先という概念の定義する方法を見てきました
次は再帰的定義により
関数を定義する方法を見ていきます
レッスン2ですでに定義された関数から始めます
階乗関数について定義しました
階乗とはn個のものの順列をつける方法の数であり
入力は数値nであることを定義しました
n＊（n－1）＊（n－2）というように
結果が1になるまで続けます
定義は数学的にあまり正確なものではなく
数学的定義として問題があります
つまり式の中に．．．とあれば
人間はその意味をある程度正しく理解します
しかし数学的定義として
正確さを持つものではありません
もし再帰的定義を使用すれば階乗について
さらに正確に定義できます
それは基本ケースを必要としているのでそのためには

English: 
So we've seen how to use recursive definitions to make
words, and to define concepts like ancestors. Now we're going
to see how to use recursive definitions to define a
procedure. And we're going to start with the procedure that we
already defined in unit two. We defined the factorial procedure.
And we defined factorial as the number of ways that
we can order n items, and the input is the
number n. And that could be calculated by multiplying n times
n minus 1 times n minus 2, and so on until we get down to the 1.
So that definition is not very precise mathematically,
and the problem with this as a mathematical definition.
Is, it's got this, dot dot dot in
it, and humans sort of understand that correctly, what
that dot dot dot means, but it's not a
very precise mathematical definition. If we use a recursive
definition, we can define factorial in a much more
precise way. And we need to do that by
giving a base case, so for the base case

Chinese: 
我们已经了解如何使用递归定义去创造新的词语
以及如何去定义类似于祖先这样的词语的概念
现在我们将去了解如何使用递归概念去定义一个程序
我们将从在第二单元时已经写好的那个程序开始
也就是阶乘程序
在阶乘中 我们可以定义n个数字
并且程序的输入为数字n
计算过程就是n乘
n-1 n-2 等等 直到1
所以这个定义在数学上不是很精确
并且它的问题是作为一个数学上的定义
得到这个 点 点 点
人们可以正确地理解那些
点点点的意思
这不是一个很精确的数学定义 如果我们在这里用递归
我们可以用一个准确得多的方式去定义阶乘
我们所需要做的就是 通过得到的基础案例
对于这个基础案例

Portuguese: 
Vimos como usar definições
recursivas para criar palavras
e definir conceitos
como ancestrais.
Agora, aprenderemos a usar
definições recursivas
para definir um procedimento.
Vamos começar pelo procedimento
que definimos na unidade 2.
Definimos
o procedimento fatorial.
Definimos fatorial
como o número de maneiras
que podemos ordenar n itens,
e o input é o número n.
Ele pode ser calculado
multiplicando n vezes n - 1
vezes n - 2, e assim por diante,
até chegarmos a 1.
Essa definição não é muito
precisa matematicamente,
e a razão disso são
estes 3 pontos.
Humanos entendem
o que os 3 pontos significam,
mas não é uma definição
matemática muito precisa.
Se usarmos
uma definição recursiva,
poderemos definir fatorial
de forma muito mais precisa.
Precisamos fazer isso
gerando um caso base,

Portuguese: 
que é o input mais simples,
ou algo cuja resposta
já saibamos.
Para fatorial e vários procedimentos
que envolvem números,
o input mais simples
é o número 0.
Se tentarmos fatorial 0,
o número de maneiras
de organizar 0 coisas
é definido como 1.
Sabemos esse resultado.
Esse será nosso caso base.
Agora, precisamos definir
o caso recursivo,
em que queremos definir
o significado do fatorial
para qualquer número n.
n é qualquer inteiro
maior que 0.
Podemos definir isso
em termos
do fatorial
dos números menores.
Ao olhar esta definição
com os 3 pontos,
vemos que o fatorial de n
é n vezes n – 1,
e assim por diante.
Isto que temos aqui
é o fatorial de n – 1.

Chinese: 
我们考虑最简单的输入
我们可以不用通过计算就知道结果的输入 对于阶乘
和很多包含数字的程序 最简单的输入就是0
因此如果我们尝试阶乘0
所得的结果是1
我们都知道这个答案 就把这作为我们的基础案例
现在我们所要做的就是定义递归
也就是定义数字n的阶乘的意义 其中n是任意大于0的实数
我们可以
根据阶乘更小的数字来定义它 因此如果你看一下用点点点的定义
阶乘就是n乘n-1等等
以此类推 在这里实际上我们所计算的

Japanese: 
最も単純なインプットを考えるのがいいのです
つまりすでに答えを知っているものです
階乗や数字が関係する多くの関数については
単純な入力とは数字ゼロのことです
factorial（0）を行うならば
ゼロを取扱う方法の数は1と定義されます
このようにして結果が分かります
基本ケースとなります
さて今行うべきことは
再帰的ケースを定義するだけであり
任意の数字nを取るfactorial（n）の意味を
定義をしようとしています
nはゼロより大きい整数であり
小さい数字の階乗関数であると定義できます
この．．．を含む定義を見るとfactorial（n）は
n＊（n－1）＊（n－2）＊．．．＊1であることが
分かります
この部分にあるのは実はfactorial（n－1）です

English: 
we want to think about the simplest input, something where
we already know that answer. And for factorial, and
for many procedures that involved numbers, the simplest input
is the number 0. So if we try factorial
0, the number of ways to arrange 0 things is
defined as 1. So we know that result. That's going to be our base case.
Now all we need to do is define the recursive case, where we want to define what
the meaning of factorial for any number n is. Where n is any
integer greater than 0, and we can define that in terms of
the factorial of the smaller numbers. So if you look at this definition
with the dot dot dot, well we see that the factorial of n is
n times n minus 1 and so forth. Well, this what we have here, is actually the

Japanese: 
こうして階乗関数を定義することができ
factorial（n）＝n＊factorial（n－1）となります
これは再帰的ケースであり
階乗関数がn個の対象を取扱う方法の数を
意味するとしたら
この定義は私たちの直感と実に合うものです
このことは最初の1個を扱うには
n通りの方法があると
考える方法にまったく一致しています
最初の1個を取り扱ったらn個が残され
n－1の階乗は
残りのn個を扱う方法の数を教えてくれます
これが数学的に定義する方法です
さてここで小テストを出しましょう
whileループを使わず階乗を計算して
関数を定義してください

English: 
factorial of n minus 1. So that means that we can define the factorial then as
n times the factorial of n minus 1.
And that's our recursive case, and this definition matches
our intuition well, if we think about factorial
meaning the number of ways to arrange n objects.
This corresponds exactly the way we think about this, that
we have n ways to pick the first item. And once
we've picked the first item, well, we have n items left,
and factorial of n minus 1, gives us the number of
ways to arrange the remaining n minus 1 items. So
that's a way to define this mathematically. So now, I'll leave
it to you as a quiz, to figure out how to
define a procedure, that computes factorial without using a while loop.

Chinese: 
是n-1的阶乘 也就意味着我们可以将阶乘定义为
n乘上n-1的阶乘
这就是递归
这个定义跟我们的直觉相似 当我们想到计算n的阶乘时
这个定义跟我们的直觉相似 当我们想到计算n的阶乘时
这正是我们对此的想法
我们有n种方法去选择第一个
一旦我们选好第一个 我们就只剩下n
以及n-1的阶乘 
给出了排列剩余的n减1项的方法的数量
这是一个数学定义的方式 所以现在
我将这个作为一个小测验 让你找出如何
去定义一个程序 不使用循环就可以计算阶乘

Portuguese: 
Isso significa que podemos
definir o fatorial
como n vezes
o fatorial de n – 1.
Esse é nosso caso recursivo.
Esta definição corresponde à nossa
intuição, se pensarmos em fatorial
como o número de maneiras
de organizar n objetos.
Isto corresponde à maneira
como pensamos nisto,
que temos n maneiras
de escolher o 1º item.
Após escolher o 1º item,
sobram n itens,
e o fatorial de n – 1 nos dá
o número de maneiras de organizar
os n – 1 itens restantes.
Essa é uma forma de definir
isso matematicamente.
Como quiz, descubra
como definir um procedimento
que calcule o fatorial
sem usar um loop while.
