在編譯原理的語法分析中,很多文法都是遞迴形式給出的。
假設有如下文法:
g[f]:
f→fg
g→gf
判斷字串 a 是否滿足的程式如下:
int f(intpos)
int g(int
pos)
intmain()
return0;
}
易知,這個程式輸出總為 -1,因為不存在有限長的 f,f = fgf.
反過來,要想結果輸出的不是 -1,f的結果是g(pos+1),g的結果又是f,不可能從這個圈推出。
如果我們給 f/g 增加乙個可行出口,就能找到滿足條件的有限長的字串。
例如文法改成:
g[f]:
f→fg | a
g→gf
int f(intpos)
int g(int
pos)
此時,像 fgfga 這樣的就滿足條件了。
可見,相互遞迴呼叫有可行輸出的條件是,乙個函式的可行輸出不是唯一的。
互動遞迴和丘齊數
上次說到丘齊數 的時候並沒有提到怎麼定義後繼函式,succ n n 1。這兩天讀pierced的書 順便說一句,這本types and programming languages的敘述清晰,推理自然,符號也用得非常簡約。相比那本principles of program analysis,peirc...
互動遞迴和丘齊數
上次說到丘齊數的時候並沒有提到怎麼定義後繼函式,succ n n 1。這兩天讀pierced的書 順便說一句,這本types and programming languages的敘述清晰,推理自然,符號也用得非常簡約。相比那本principles of program analysis,peirce...
關於iOS app之間相互呼叫
待有時間整理 還是複製咱貼吧 顯示連線 之後是 檢測已經安裝 cpp view plain copy bool if url host isequaltostring com.taobao.dgb return yes 由於url是自己定義的,所以會存在url重複的情況。經過測試發現,如果試圖開啟這...