[過去ログ]
関数型プログラミング言語Haskell Part32 (1002レス)
関数型プログラミング言語Haskell Part32 http://mevius.5ch.net/test/read.cgi/tech/1548720347/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
20: デフォルトの名無しさん [sage] 2019/02/03(日) 21:20:07.09 ID:RwDwNYzW >>15 ほとんど同じ説明だが… 関数の定義が fact 0 = 1 fact n = n * fact(n - 1) となっている。 このとき、左辺が右辺に置き換えられる (簡約という) つまり fact 3 は 3 * fact 2 に置き換えられる そして fact 2 は 2 * fact 1 に置き換えられる そして fact 1 は 1 * fact 0 に置き換えられる ひとつめの関数の定義により、fact 0 は 1 に置き換えられるので 置き換えはここでとまる 以上をまとめると fact 3 = 3 * fact 2 = 3 * 2 * fact 1 = 3 * 2 * 1 * fact 0 = 3 * 2 * 1 * 1 = 6 http://mevius.5ch.net/test/read.cgi/tech/1548720347/20
23: デフォルトの名無しさん [sage] 2019/02/03(日) 21:25:18.35 ID:5bolWXfM >>19 理解したのは>>9の通りで 仮定として1かtrueを返したら再帰は止まる仕様になってると推測してる >>20 だからfact(1)で無限に続いちゃうよね 1 - 1で fact 0をevalしてまたfact(1)になる そこで終了条件が必要だけど何にも書いてないから記述通りならずーっと続く としか見えないんだよね http://mevius.5ch.net/test/read.cgi/tech/1548720347/23
28: デフォルトの名無しさん [sage] 2019/02/03(日) 21:29:11.55 ID:RwDwNYzW >>23 >>>20 >だからfact(1)で無限に続いちゃうよね >1 - 1で fact 0をevalしてまたfact(1)になる >そこで終了条件が必要だけど何にも書いてないから記述通りならずーっと続く そうはならない fact 1 = 1 * fact 0 に簡約される そして fact 0 = 1 であって fact 0 = 0 * fact(0 - 1) とは絶対にならないからここで終わる 高校数学がわかるなら、漸化式と同じだと思えばよい http://mevius.5ch.net/test/read.cgi/tech/1548720347/28
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.850s*