なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net (914レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
548: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)17:38 ID:7uWOp/tU(1/14)
つか、末尾再帰ってループそのまんまで再帰の利点ないし

recHoge1(a,n,arg...){
 dobefore()...
 if(a<n)recHoge1(a,n,arg...);
}
loopHoge1(a,n,arg...){
while(a<n){
 dobefore()...
 }
}
再帰は無意味、使う必要なし

recHoge2(a,n,arg...){
 dobefore()...
 recHoge2(a,n,arg...);
 doafter()...
}
loopHoge2(a,n,arg...){
 while(a<n){
  pushargstack();
  dobefore()...
  popargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
549: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)17:44 ID:7uWOp/tU(2/14)
pop,push逆だった
loopHoge2(a,n,arg...){
 while(a<n){
  popargstack();
  dobefore()...
  pushargstack();
  doafter()...
 }
}
550: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)18:00 ID:7uWOp/tU(3/14)
pushargstack();
popargstack();
ユーザー定義のこれらはめんどくさいから
再帰関数使ってコンパイラ任せにするよ
552
(1): NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)18:16 ID:7uWOp/tU(4/14)
recHoge1(term,arg...){
 dobefore()...
 if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
 while(term){
  dobefore()...
 }
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
 dobefore()...
 if(term)recHoge2(term,arg...);
 doafter()...
}
loopHoge2(term,arg...){
 while(term){
  popargstack();
  dobefore()...
  if(term)continue;
  pushargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容
553: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)18:19 ID:7uWOp/tU(5/14)
>>551
>>552
以上のことの何があるか説明してみてよ
554
(1): NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)18:42 ID:7uWOp/tU(6/14)
http://nas6.main.jp/Maze.cpp

再帰、ループ、等価迷路
555: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)18:55 ID:7uWOp/tU(7/14)
recHoge1(term,arg...){
 dobefore()...
 if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
 while(term){
  dobefore()...
 }
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
 dobefore()...
 if(term)recHoge2(term,arg...);
 doafter()...
}
loopHoge2(term,arg...){
 while(term){
  pushargstack();
  dobefore()...
  if(term)continue;
  popargstack();
  doafter()...
 }
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容 、勘違い訂正
556: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)19:03 ID:7uWOp/tU(8/14)
>>554で、
ループ実装が好きなやつはいないと思うんだけどな
558: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)21:51 ID:7uWOp/tU(9/14)
「{C++規則をかなり抑えてCライク}で書かれたソースコード」
のクロスランゲッジなんて、ほぼ、ライブラリの関数名を書き換えるだけだろ
559
(1): NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)21:54 ID:7uWOp/tU(10/14)
あ、あと制御構文もちゃっちゃっと書き換えれば出来上がり
566: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)23:00 ID:7uWOp/tU(11/14)
ruby知らんがこんな感じだろ

def recHoge2(term,arg...)
  dobefore(arg...)
  if term
   recHoge2(term,arg...)
  end
  doafter(arg...)
end
end

def loopHoge2(term,arg...)
 while term
  pushargstack(arg...)
  dobefore(arg...)
  if term
   next
  end
  popargstack(arg...)
  doafter(arg...)
end
end
567: NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)23:01 ID:7uWOp/tU(12/14) AAS
AA省
568
(1): NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)23:07 ID:7uWOp/tU(13/14)
def recHoge2(term,arg...)
 dobefore(arg...)
 if term
  recHoge2(term,arg...)
 end
 doafter(arg...)
end

で、こんだけで済むのに、
ループにしたいからって
スタックのユーザー定義なんて馬鹿だろう
569
(1): NAS6 ◆n3AmnVhjwc [] 2016/01/04(月)23:22 ID:7uWOp/tU(14/14) AAS
AA省
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s