マクドナルドが再帰の概念を用いたサービスを始めたようです

(今日の話題はプログラマー向きです)

詳しくは、以下の2ちゃんログサイトを見てください。
http://urasoku.blog106.fc2.com/blog-entry-600.html

要するにビックマックセットを頼むと、ビックマックセット+ポテト+ドリンクが付いてくるみたいです。

ってことは、そのビックマックセット+ポテト+ドリンクにおけるビックマックセットも、ビックマックセット+ポテト+ドリンクであるわけで。C言語で書くとこういうことですね。

商品 ビックマックセット( ) {
 return ビックマックセット( ) + ポテト + ドリンク ;
}

終了条件を書かないと無限ループになっちゃうよ。これバグですよマクドナルド。

いや、まてよ? 上の書き方だと単純な無限ループだが、以下のように(左再帰を除去して)こう書き直したらどうだろう?

商品 ビックマックセット( ) {
 return ポテト + ドリンク + ビックマックセット( ) ;
}

こうすると同じく無限ループになるが、ポテトとドリンクは無限大に増えていく。そうするとビックマックは無視できるくらい小さくなり、無限大のポテト+ドリンクが残る。そういうサービスなのだろうか。マクドナルドは「ビックマックセットの料金を払えば、ポテトは食べ放題、ドリンクは飲み放題ですよ!」と言いたいのだろうか?

興味が尽きません。久しぶりにビックマックでも食べに行くか。