第8講 社員が自分自身に仕事を命令する=メソッドの再帰的使用

第4話 分身の術による1から10までの積プログラム解説
qwf
を実現するプログラム例
def f(n)
 if n>0 then
  a=f(n-1)
 else
  return 1
 end
 return n*a
end
print "1から10までの積=",f(10),"\n"
参考ダウンロード添付ファイル

和のプログラムの場合、
自分の1番深いところまで遡及して分かったことは、
空っぽということでした。
ですが、積のプログラムの場合は、
入れ子式の一番奥の箱に中に入っていたものは、
  return 1
1です。
外側の箱から内側の箱への遡及の旅が終わると、
逆遡及の旅が始まります。
つまり、1番内側の箱(人形)から1番外側への箱(人形)への旅が始まるのです。
1番内側の箱(人形)は、内側から2番目の箱(人形)に
  return 1
1を返します。
内側から2番目の箱(人形)から、1番内側の箱(人形)の中身は何と問い合わせを受け、
1が入っていたよと、内側から2番目の箱(人形)に報告したのです。
                  ↓
内側から2番目の箱(人形)は、
1番内側の箱(人形)から受け取った値1に、
nの値(箱の番号)1をかけた1を内側から3番目の箱(人形)に返します。
                  ↓
内側から3番目の箱(人形)は、
内側から2番目の箱(人形)から受け取った値1に、
nの値(箱の番号)2をかけた2を内側から4番目の箱(人形)に返します。
                  ↓
内側から4番目の箱(人形)は、
内側から3番目の箱(人形)から受け取った値2に、
nの値(箱の番号)3をかけた6を内側から5番目の箱(人形)に返します。
                  ↓
内側から5番目の箱(人形)は、
内側から4番目の箱(人形)から受け取った値6に、
nの値(箱の番号)4をかけた24を内側から6番目の箱(人形)に返します。
                  ↓
内側から6番目の箱(人形)は、
内側から5番目の箱(人形)から受け取った値24に、
nの値(箱の番号)5をかけた120を内側から7番目の箱(人形)に返します。
                  ↓
内側から7番目の箱(人形)は、
内側から6番目の箱(人形)から受け取った値120に、
nの値(箱の番号)6をかけた720を内側から8番目の箱(人形)に返します。
                  ↓
内側から8番目の箱(人形)は、
内側から7番目の箱(人形)から受け取った720に、
nの値(箱の番号)7をかけた5040を内側から9番目の箱(人形)に返します。
                  ↓
内側から9番目の箱(人形)は、
内側から8番目の箱(人形)から受け取った値5040に、
nの値(箱の番号)8をかけた40320を内側から10番目の箱(人形)に返します。
                  ↓
内側から10番目の箱(人形)は、
内側から9番目の箱(人形)から受け取った値40320に、
nの値(箱の番号)9をかけた362880を内側から社長に返します。
                  ↓
内側から11番目の箱(人形)は、
内側から10番目の箱(人形)から受け取った値362880に、
nの値(箱の番号)10をかけた3628800を内側から社長に返します。
以上の過程
以上の過程

1→1×1→1×2→3×3→6×4→24×5→120×6→720×7
→5040×8→40320×9→362880×10
すなわち、
1→1×1→(1×1)×2→(1×1×2)×3→(1×1×2×3)×4→・・・
結局
1→1×1→1×1×2→1×1×2×3→1×1×2×3×4→・・・
となっているのがお分かりですか。

では、皆さん順列をこの分身の術で作ってみましょう。
8778

第3話へ 第5話へ


004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vba 2013 2010 2007 入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門第1部へ
本サイトトップへ