[過去ログ] 関数型プログラミング言語Haskell Part32 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
21: デフォルトの名無しさん [] 2019/02/03(日) 21:22:45.27 ID:I0qputsI(1/5) AAS
>>1515(3): デフォルトの名無しさん [sage] 2019/02/03(日) 21:13:08.06 ID:5bolWXfM(3/36) AAS
>>14
あの説明で納得するようならここ来てないから
あれだとブログの説明と何も変わらない
まさか1かtrueを返したら問答無用で終わる仕様だったりするのかねー
fact 0で問答無用で終わる仕組みですが。。。
>>1111(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その考えであってる。
40(1): デフォルトの名無しさん [] 2019/02/03(日) 21:38:05.69 ID:I0qputsI(4/5) AAS
>>3333(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
>>4242(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