[過去ログ] 関数型プログラミング言語Haskell Part32 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
21: デフォルトの名無しさん [] 2019/02/03(日) 21:22:45.27 ID:I0qputsI(1/5) AAS
>>15
15(3): デフォルトの名無しさん [sage] 2019/02/03(日) 21:13:08.06 ID:5bolWXfM(3/36) AAS
>>14
あの説明で納得するようならここ来てないから
あれだとブログの説明と何も変わらない

まさか1かtrueを返したら問答無用で終わる仕様だったりするのかねー
fact 0で問答無用で終わる仕組みですが。。。

>>11
11(3): ◆QZaw55cn4c [sage] 2019/02/03(日) 15:04:51.94 ID:t4xt++Qj(1/20) AAS
>>9
>無限ループになっちゃって終わらないでしょ終端条件も書いてないし。
いえいえ、終端条件が
>fact 0 = 1
です、n ∈ N たる n からはじまって 0 で終わる、と読みます
fact 3 = 3 * fact 2
= 3 * 2 * fact 1
= 3 * 2 * 1 * fact 0
= 3 * 2 * 1 * 1
で止まります.
以上にやさしい説明はないと思われ。

普通の言語(ここで
27
(1): デフォルトの名無しさん [] 2019/02/03(日) 21:29:01.89 ID:I0qputsI(2/5) AAS
途中で。。。

まあいい。

Pythonでも再帰出来る。
特別な話じゃない。

def fact(n):
if n == 0:
return 1
else:
return (n * fact(n - 1))
31
(1): デフォルトの名無しさん [] 2019/02/03(日) 21:32:49.38 ID:I0qputsI(3/5) AAS
>>25
25(3): デフォルトの名無しさん [sage] 2019/02/03(日) 21:27:00.44 ID:5bolWXfM(6/36) AAS
>>22
ということはやっぱり1を返したら必ず再帰は止まる仕様であってるのかな?
だったらすっきりするんだけども
その考えであってる。
40
(1): デフォルトの名無しさん [] 2019/02/03(日) 21:38:05.69 ID:I0qputsI(4/5) AAS
>>33
33(4): デフォルトの名無しさん [sage] 2019/02/03(日) 21:33:05.02 ID:5bolWXfM(7/36) AAS
>>28
いやいやfact(1)の評価は0なんだし
fact 0の定義があるからまた1
どう考えても続くんだよね

そもそも再起から脱出するためのコードがどこにもないから怪しいとも踏んでる
何か前提となってる仕様がありそうだ
fact 1の評価は1 * fact 0

fact 0のみが再帰してない。(基底部)
再帰は再帰部と基底部が必ず最低1個ずつ存在する。
84: デフォルトの名無しさん [] 2019/02/03(日) 22:28:40.54 ID:I0qputsI(5/5) AAS
>>42
42(4): デフォルトの名無しさん [sage] 2019/02/03(日) 21:39:35.29 ID:5bolWXfM(9/36) AAS
>>35
教えてもらったからもう大丈夫だよ
1で再起が止まる仕様なら納得だし

>>36
fact(1)を入力したら 1-1を評価するから fact 0
特に問題ないよ

1で止まる仕様らしいからそれを前提にコード考えないといかんのか・・
ややこしいことになるねこれ
1で止まる仕様と言うか。。。
掛け算だから1を返すだけ(掛けても変わらない数)で、足し算なら0を返すよ。

sum1toN 0 = 0
sum1toN n = n + sum1toN (n - 1)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.056s