[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/08 14:06 / Filesize : 275 KB / Number-of Response : 1034
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

なあ、再帰関数好きな人いる?



1 名前:名無しのプログラマ [2015/08/09(日) 17:46:33.69 ID:Icb40LOY.net]
for,while使うの嫌いで基本的に再帰多用するんだが、だめなの?
皆から敬遠されてる気がする

655 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 18:34:45.30 ID:FR19Rjgq.net]
再帰キティは、理由なんか無く難癖つけるだけのレスばかり

656 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:04:17.17 ID:RgFRqfXr.net]
>>638
数学的に突き詰めれば自然数だって帰納的に定義されるものなんだから、
ループは必ず再帰に置き換えられるね(もちろん逆もまた真)

したがって意味がないことはない
あとはどっちが読みやすいかだけの話

モダン言語の流れは手続き的なループをなくして、再帰や高階関数を使う
方向のようだけどね

657 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:31:46.45 ID:K7Q0EkNO.net]
再帰とループの違いはなに?
手順をスタックしてるかどうかでしょ

まぁループと再帰を別に考えてる(と言うか感じてる)時点で三流くささがするのだけど

658 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:32:19.95 ID:FR19Rjgq.net]
それモダン言語じゃなくて、性能の悪い非実用的な言語なだけ

659 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 20:55:16.54 ID:RgFRqfXr.net]
>>643
最近はマシンスペックが上がってるからね
性能より抽象的な書き方ができるのを求めるようになってるんだよ

性能カリカリに求めたい場合だけCとか使っておけばいい世界

660 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:38:09.28 ID:vuZU5Hwi.net]
>>642
> 再帰とループの違いはなに?

ループ・・・小学校で習う(1から10までの数字を足し算しょう等)
再帰・・・高校で習う。(1からnまでの自然数の和を計算式で表す)

661 名前:デフォルトの名無しさん [2015/09/04(金) 21:49:10.66 ID:q06Od88z.net]
>>645
まったく理解できてない……

662 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:49:46.26 ID:vuZU5Hwi.net]
>>646
「間違ってる」とは言わないんだなw

663 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:54:59.88 ID:K7Q0EkNO.net]
なんかどうでもいいや



664 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 21:59:29.06 ID:vuZU5Hwi.net]
はい、反論も出なかったわけで、
つまりループと再帰ではループのほうがわかりやすいんだよね。

単純なループじゃない場合は、再帰のほうがいい場合もある。
だけどループでいいのならば、ループのほうがわかりやすい。

それは小学生でもループを理解していることからわかる。
(小学生にループというのは、nにn-1を足すのを0になるまで繰り返すとか言ってもわからない)

665 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 22:17:32.25 ID:6Rt4goII.net]
最新の実験的な言語で昔の関数型に回帰して再帰に走ってるの
単に言語開発のネタ切れしてるだけじゃねぇの

開発サイドの人間が必死こいて宣伝してるんだったら気持ちもわかるが
ユーザーだったらもっとマシな言語あるでしょとしか言えない

666 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 22:24:44.42 ID:q06Od88z.net]
>>647
根底から間違ってる、って言えばよかったの?

まず、(((((((((1+2)+3)+4)...+10) は典型的な再帰構造。ループでもなんでもない。

そして和の公式 n*(n+1)/2 は再帰でも何でもない閉じた式表現
(というか、再帰を使わない式にすることこそがその眼目だ)。

667 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:01:37.97 ID:vuZU5Hwi.net]
1から10まで足せって
小学生に言って、そんな式書く奴いないなw

普通は
1 + 1 = 2
2 + 2 = 4
4 + 3 = 7
7 + 4 = 11
って計算するんだぜ。

これを10まで繰り返す。
まさにループ

668 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:20:57.61 ID:q06Od88z.net]
>>652
それ全然ループじゃないから。

669 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:24:17.87 ID:q06Od88z.net]
n-1 までの和に n を足せば nまでの和が得られる、という原理に忠実な計算なんで
再帰以外のなにものでもないんだけど、基礎論触ったことないとわかんないかもね。

670 名前:デフォルトの名無しさん [2015/09/04(金) 23:26:41.39 ID:yf6WF608.net]
>>654
わかったところでカスだけどな。
再帰っていうのは木偶の坊の代名詞。

671 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:28:22.98 ID:kQbi8Wuv.net]
一つの見方しかできないのは数学に向いてないよ

672 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:29:28.63 ID:vuZU5Hwi.net]
>>653
ループじゃんw

書けば理解できるのか?

int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}

これをステップ実行したのが>>652

673 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:30:53.74 ID:K7Q0EkNO.net]
おまえら夏休みは終わったんだぞ



674 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:33:40.85 ID:vuZU5Hwi.net]
>>658
9月にそれを言うってことは
お前大卒(もしくは在籍)じゃないのか?

675 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 23:43:51.99 ID:RgFRqfXr.net]
>>655
分かったなら再帰が役に立つことぐらい簡単に理解できそうなもんだけどなー
理解できないならわかってないんだよ

676 名前:デフォルトの名無しさん [2015/09/05(土) 00:20:19.44 ID:LWQiKMu8.net]
>>660
ループの方が100億万倍やくに立つ。
再帰は数学に憧れてるだけで数学できない出来損ない野郎が使う。

677 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 00:45:04.95 ID:j+vMQGdO.net]
いや、goto の方が1000億万倍役に立つだろ。

678 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 00:56:03.07 ID:dKM7sd/0.net]
a. 再帰は不要
b. ループは不要
c. どっちも欲しい
d. 言語に合わせる

aとb(いるのか?)に精神病患者がいるせいで、
cの人の投げた話題を勝手にa(あるいはb)の人間の主張と見なして攻撃するのがおかしい。
aに反駁したらループ不要派だとレッテルを貼られ、
bに反論したら再帰理解できない馬鹿とレッテルを貼られるが、そもそもnot a != bだしnot b != aだからな。

再帰関数を作る時は、頭に保持しなきゃならない情報が少ないのがいいよ。
f(n)の定義を使ってf(n)を定義できるイメージ。場合分けだけで済む。
古典的なインデックスを使うforループより、要素を1つずつ取り出すっていうのが明確なforeachが好まれるのも似た理屈だと思う。

679 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 01:09:05.88 ID:dKM7sd/0.net]
あと、再帰はパターンマッチがあると途端に利便性が上がる。
例えばリストの要素を2つ以上必要とする処理を書くとき、OCamlだと
let rec foo acc xs = match xs with
| x :: y :: rest -> foo (do_something x y acc) y::rest)
| _ :: [] | [] -> finish_something
みたいに書けて楽。ループだとインデックスの範囲とか終了条件とか色々考慮しなきゃならんので手間がかかる。

680 名前:デフォルトの名無しさん [2015/09/05(土) 01:13:53.21 ID:LWQiKMu8.net]
>>664
パターンマッチは邪道
ナローイングなキャストを誤魔化してるだけ

681 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 01:22:40.76 ID:9u1zKCQd.net]
邪道でもなんでもないよ
これを邪道とか言ってるのはCとかにどっぷり漬かった人間のただの負け惜しみ

682 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 04:48:42.79 ID:Bq/cKCjD.net]
どっちの書き方も使うからどっちが良いも悪いも邪道もどうもない


ただし再帰のを話題にするなら、一回その楽な書き方で書いてから、正しい書き方に直すような前提の話になる
CPUやメモリを隠してる状態でこの話は有り得

683 名前:ない
再帰かどうかと言うのは、CPUとメモリの使いかた (の人間的な概念) を指すものだから。

この手の話題を出す限りは、Pythonが仕様書兼動作テストで、それを手動最適化して直したのが Cの実装 なんてのも十分有り得る
ま、さらに深くまで考慮するとまったく区別のしようがない同じ物なんだけどね。

ちょっと前に Rubyでしか使えないRuby用語の配列を、まるで本物の配列のように思い込んでた人がいたね。
再帰も再帰でそれと同じ。もちろんループも。
特定の言語内部だけの話ならそちらのスレにどうぞ。
[]
[ここ壊れてます]



684 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 06:52:05.04 ID:BDvTAHGX.net]
>>667
CTMCP(ガウディ本)読んで、計算モデル理解した方が良いよ。

685 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 06:56:36.26 ID:ReU+9sFg.net]
>>668
理解したよ。それでいいたことは何かな?

686 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 06:59:39.65 ID:Bq/cKCjD.net]
わお。まるで俺が返信したみたい。

まぁ俺も同じことを聞こうか
>>668
それで言いたいことはなにかな?

687 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 07:33:00.36 ID:zGjt7Ia9.net]
>>657
おま、戻り値を使いまわしたら基本的に再帰じゃないの?。。。

688 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 07:42:48.23 ID:Bq/cKCjD.net]
うわー
馬鹿しかいねぇ

689 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 07:45:22.49 ID:Bq/cKCjD.net]
失礼。すまなんだ。よけいな発言だった

690 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 08:00:20.87 ID:zGjt7Ia9.net]
//r:ret,s:diff,n:n
int sigma(int r, int s, int n) {
 if (n < 1)return 0;
 if (n == 1) return r;
 return r + sigma(r + s, s, n - 1);
}
int sigma2(int s, int n) {
 if (n < 1)return 0;
 int r = 0, t = s;
 for (n--; 0 < n; n--, t += s) r = r + t;
 return r;
}
戻り値の使いまわしは基本的に再帰

691 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 08:50:03.58 ID:Bq/cKCjD.net]
そこで再帰かどうかは決まらないんだけど。


でもあえてそこで決めるのならば(その話に乗るのならば)、手順 (もしくはそれに相当するもの) を覚えている物が再帰。
sum = sum + i;
これは現在の状態しか保持しない。

構造を検索するもの、…例えばディレクトリとファイル検索で
whileだけを使ったとしても、
出てきたそれぞれのファイル対し、そのアドレスを記録したら、
それは処理における必要資源量の理論最低値は再帰と等価

692 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 08:53:27.64 ID:zGjt7Ia9.net]
そそ、戻り値の使いまわしとスタック保存

693 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 08:59:50.82 ID:zGjt7Ia9.net]
たとえば、シュミレーションゲームでユニットの移動範囲を調べる
とかの全検索は、どうやっても再帰
もちろんA*も再帰



694 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 09:02:33.33 ID:Bq/cKCjD.net]
会話が成り立ってねぇ

695 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:03:26.20 ID:zGjt7Ia9.net]
スタック保存の必要がなければループ文でいい

696 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:05:10.34 ID:zGjt7Ia9.net]
>手順 (もしくはそれに相当するもの) を覚えている物が再帰。
これがスコープのスタック保存だろ

697 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 09:06:13.64 ID:Bq/cKCjD.net]
あんた
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
これを再帰って言ったでしょうに。
これはスタックの保存じゃなくて上書きっつーの

698 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:13:54.31 ID:SH0QgRhI.net]
sum=sum+iで
sum+iのsumはスタック保存

699 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:20:33.46 ID:SH0QgRhI.net]
まあスタックを「戻す必要がないから」保存して上書きしてるんだろ

700 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 09:21:52.97 ID:Bq/cKCjD.net]
それはスタックじゃねぇ

a = 0;
a = a + 1;
a = a + 2;
以上の三行は再帰とは呼ばない

再帰と言うのは最終段階の55の瞬間に今までの経緯を覚えてて
そこで初めて再帰と必要資源量の (理論最低値の) 釣り合いが取れます。
例えば配列に 1, 2, 4, 7, 11,… と記録したらそこで初めてある側面で再帰と同じ資源量

701 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 09:25:47.84 ID:Bq/cKCjD.net]
いや再帰っつーのは終わるまで必ず自身がどの手順でそこの処理に居るのかが記録されてるから。
必要がないもくそもない

702 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:26:38.87 ID:zGjt7Ia9.net]
sum=sum+iで
sum+iのsumはスタック保存値
sum=のsumがスタック保存(+上書き)
こういうのはループでも全然いいけど
スコープスタックを保存する必要があるなら、完全に再帰しかない

703 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 09:29:04.79 ID:Bq/cKCjD.net]
さいならー



704 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:40:47.32 ID:zGjt7Ia9.net]
いや再帰っつーのは終わるまで必ず自身がどの手順でそこの処理に居るのかが記録されてるから。
必要がないもくそもない

だから、スコープスタックを保存する必要がある時に、再帰を使う必要があるんですってば

705 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 09:57:57.73 ID:zGjt7Ia9.net]
>>651

>>674
な感じなんだろ

ループは、スコープスタックを保存しなくていい時
再帰は、スコープスタックを保存しなければいけない時
再帰の文字通り、手順の戻り道を、覚えている必要があるかどうかだよ

706 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:00:34.66 ID:ReU+9sFg.net]
えー、バカ以外には言うまでもないことだが
スタックというものは、
値のプッシュ(スタックに積む)と
値のポップ(スタックから取り出す)を
行うためのデータ構造です。

これをしていないものは、当然
スタックではありません。

707 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:01:42.56 ID:zGjt7Ia9.net]
バカは知りませんが関数呼び出しはコールスタックです

708 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:01:59.54 ID:ReU+9sFg.net]
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF

スタックはコンピュータで用いられる基本的なデータ構造の1つで、
データを後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)の構造で
保持するものである。抽象データ型としてのそれを指すこともあれば、その具象を指すこともある。

709 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:02:49.88 ID:ReU+9sFg.net]
>>691
> バカは知りませんが関数呼び出しはコールスタックです

どこの話をしてるんですか?

710 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:03:52.96 ID:ReU+9sFg.net]
再帰というのは、関数の中で
自分自身の関数を呼び出すもののことです。

これをやっていないものは
当然再帰ではありません

711 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:12:58.37 ID:zGjt7Ia9.net]
//r:ret,s:diff,n:n
int sigma(int r, int s, int n) {
 if (n < 1)return 0;
 if (n == 1) return r;
 return r + sigma(r + s, s, n - 1);
}
これは全部、スタックに保存されてるよ
だから、
int sigma2(int s, int n) {
 if (n < 1)return 0;
 int r = 0, t = s;
 for (n--; 0 < n; n--, t += s) r = r + t;
 return r;
}
これに比べて、スタック保存分、オーバーロードしているけどね
ユニットの移動範囲とか、画像のフィリングとか、
ある点の周囲探索は、スタック保存の再帰関数にするのが一番いいだろ

712 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:16:27.86 ID:zGjt7Ia9.net]
たとえば白黒ドットの囲まれた場所のある点からの塗りつぶしで
ループだけしか使わないバカがいるのか?

713 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:19:30.35 ID:Bq/cKCjD.net]
な、
会話するの難しいだろ



714 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:21:37.41 ID:ReU+9sFg.net]
>>695
お前は知らないだろうけどね。
関数ないのローカル変数っていうのは
全部スタックに保存されるんだよ。

スタックにデータを保存すれば
再帰という理屈であれば、
ローカル変数がある関数はすべて
再帰ってことになってしまう。

もちろんそんなことはありえない。

715 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:21:49.47 ID:zGjt7Ia9.net]
白黒ドットの囲まれた場所のある点からの塗りつぶしで
ループだけしか使わないで作れるなら作ってみろよ
ニヤニヤしながら見ててやるから

716 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:26:03.39 ID:zGjt7Ia9.net]
>>698
え?コールスタックが再帰じゃないの?
それじゃ、関数を呼び出した後、元の位置に戻れないぞ

717 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:26:17.15 ID:ReU+9sFg.net]
>>699
閉空間の塗りつぶしだね?
検索したあったよ。
もちろん再帰は使っていない

> この改良版アルゴリズムはスキャンライン・シード・フィル アルゴリズム(Scanline Seed Fill Algorithm)と呼ばれています。
fussy.web.fc2.com/algo/algo3-1.htm

718 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:27:24.93 ID:ReU+9sFg.net]
>>700
> え?コールスタックが再帰じゃないの?

ぷぷぷ。こいつマジでわかってなかったんだw
お前理屈だと、すべての関数呼び出しが再帰ってことになってしまう。
再帰は、関数が自分自身の関数を呼び出している場合のみ。
お前が言ってるのは、単なる関数呼び出しだ。

719 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:34:15.27 ID:zGjt7Ia9.net]
サブルーチンの呼び出しの後、
呼び出し元に復元(リターン)できなければ、
プログラムじゃねえよ

720 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:36:14.02 ID:ReU+9sFg.net]
ほらほら、こいつ再帰って言わなくなりましたよw
自分が言っていたことが間違っていたことがわかったから
恥ずかしくなった

721 名前:んでしょうねw []
[ここ壊れてます]

722 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 10:46:29.34 ID:SH0QgRhI.net]
コールスタックって再帰だよ
関数が元に戻れてスタック内容も変わらない
コールスタックを実装したら、当然再帰関数呼び出しも実装したことになる

723 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 10:47:55.97 ID:ReU+9sFg.net]
コールスタックがない関数はないから
すべての関数は再帰である。

>>705はそう言っているのです。
生暖かい目で見てあげましょう。


お兄ちゃん!関数使えるようになった!
私、再帰使いこなしてる!



724 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 11:00:37.95 ID:zGjt7Ia9.net]
ttp://nas6.main.jp/secret/ContainerPtr.htm

ttp://nas6.main.jp/NAS6_tree_clct.h
//再帰構文例1
//再帰構文例2
は俺は両方再帰だと思って作ったけどな
>>701
みたいのは
//再帰構文例1
の構造だろ

725 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 11:05:54.33 ID:zGjt7Ia9.net]
関数の自分自身を呼ばないと再帰関数じゃないっていうのは
頭が固いんじゃないの?

726 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 11:10:08.71 ID:zGjt7Ia9.net]
訂正
関数の自分自身を呼ばないと再帰処理じゃないっていうのは
頭が固いんじゃないの?
//再帰構文例1
は関数の自分自身を呼んでないけど、どう見ても再帰処理

727 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 11:23:13.73 ID:Bq/cKCjD.net]
いっぱい突っ込みどころがあるけどそれは置いといて、
今ひとつピンと来たものがある。

よくよく思い出すと「再帰処理」と「再帰関数」と言う似てるけど別の概念がある。
それを失念していた。

なおスレタイは再帰関数である。

728 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 11:27:58.33 ID:SH0QgRhI.net]

コールスタックは再帰処理だよ

729 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 11:34:56.98 ID:Bq/cKCjD.net]
だよ、じゃねぇよ
100のうち俺の失念であろう1だ
会話が成り立ってなさすぎるからどうでもいいんだが


>コールスタックを実装したら、当然再帰関数呼び出しも実装したことになる

730 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 11:38:41.59 ID:IJjvRwCO.net]
>>707
//再帰構文例2
> は俺は両方再帰だと思って作ったけどな

お前が間違ってるんだからお前が書いたコードきて
これが再帰なんだとか主張しても意味が無い。

731 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 11:42:04.89 ID:IJjvRwCO.net]
https://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0

再帰(さいき)とは、あるものについて記述する際に、記述しているもの
それ自身への参照が、その記述中にあらわれることをいう。
定義において、再帰があらわれているものを再帰的定義という。


なるほどね。自分自身への参照が必須なんだ。

732 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 11:55:26.05 ID:zGjt7Ia9.net]
>>714
だからクラスの関数呼び出しなんて、ほとんど
this->が省略されているだけなんだが・・・

733 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 11:57:10.38 ID:IJjvRwCO.net]
>>715
関係ないよ。



734 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 12:03:39.85 ID:9u1zKCQd.net]
>>708
頭が固いもなにも、それが再帰関数の定義なんだが…

735 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 12:09:24.27 ID:zGjt7Ia9.net]
アセンブリレベルが分からないと説明しようがないな
基本的にスタックでしか動かないし

ttp://www.math.kobe-u.ac.jp/~taka/asir-book-html/main/node65.html
再帰呼び出し、スタック

736 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 12:13:43.89 ID:zGjt7Ia9.net]
>>718の大学教授にこれはループであって再帰ではないってかみついてこいよ
def xn2(N) {
 XN = 0;
 for (I=0; I<N; I++) {
  XN = 2*XN+1;
 }
 return(XN);
}

737 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 12:25:42.76 ID:zGjt7Ia9.net]
int sum = 0;
 for(int i = 1; i <= 10; i++) {
  sum = sum + i;
}

な、これは再帰だろ、頭が悪いんだから、教授に迷惑をかけるなよ

738 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 12:44:51.30 ID:zGjt7Ia9.net]
戻り値を使いまわしたら基本的に再帰なんだよってはじめに書いておいた

739 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 12:56:18.37 ID:zGjt7Ia9.net]
>>701
のも

新たなシードを決める際には、バッファ中のどのピクセルを選んでもよいのですが、
新しい順か、古い順かのどちらかに統一するのが普通でしょう。
バッファをスタック構造にすれば新しい順、キューにすれば古い順に自然に決まります。

これを読んでいないのか再帰じゃないと思ってるんだろ

740 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 13:11:58.86 ID:IJjvRwCO.net]
> 戻り値を使いまわしたら基本的に再帰なんだよってはじめに書いておいた
違う

741 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 13:14:58.05 ID:zGjt7Ia9.net]
>>723
だから、戻り値を使って再帰呼び出ししているのと同じ事だろ

742 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 13:16:02.36 ID:a9 ]
[ここ壊れてます]

743 名前:CPEVg5.net mailto: >>721
戻り値を使い回すのはDP(動的計画法)という立派な名前が付いてるんだが
[]
[ここ壊れてます]



744 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 13:16:18.51 ID:IJjvRwCO.net]
例が良かったなw
すぐに見つかった。

>>720をアセンブリレベルにすると
見ての通りスタックも関数呼び出しもない。
単なるループ

mm.ahs.kitasato-u.ac.jp/~lm00000/sim/ueyama_ip/software/add10asm.html

次の例は 1 から 10 まで (実は 10 から 1 まで) の整数を加算するプログラムです。

ラベル  命令コード  オペランド  コメント文
     LD     B, 10     ; レジスタ B に 10 を代入する
     LD     A, 0     ; レジスタ A に 0 を代入する
LOOP: ADD    A, B     ; A に B を加える。加算結果はレジスタ A に。
     DEC    B       ; B の値から 1 を引く
     JR     NZ, LOOP   ; 引いた結果が 0 でなければ LOOP に分岐する
STOP: JR     STOP     ;プログラム終了。 加算結果はレジスタ A に残る。

745 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 13:16:42.20 ID:IJjvRwCO.net]
>>724
ぜんぜん違う

746 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 13:22:00.75 ID:zGjt7Ia9.net]
>>726

>>718
のリンクで
正式には再帰で書くけど、
最適化してループで書くってようなことが書いてあるだろ

747 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 13:26:52.77 ID:zGjt7Ia9.net]
>>718
のリンクでも
>>695
でも
>これに比べて、スタック保存分、オーバーロードしているけどね
こういうわけで再帰をループに最適化するわけ

748 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 13:34:34.79 ID:a9CPEVg5.net]
>>729
ねえ、そろそろ無知を晒すのやめない?恥ずかしくないか?

749 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 13:41:26.99 ID:zGjt7Ia9.net]
//等差数列
//定義に忠実に書いた場合
//r:ret,s:diff,n:n
int sigma(int r, int s, int n) {
 if (n < 1)return 0;
 if (n == 1) return r;
 return r + sigma(r + s, s, n - 1);
}
//メモリ使用量を最適化した場合
int sigma2(int s, int n) {
 if (n < 1)return 0;
 int r = 0, t = s;
 for (n--; 0 < n; n--, t += s) r = r + t;
 return r;
}
で、最適化されたのしか、教わらないし、理解できないのかな?

750 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 13:48:39.57 ID:zGjt7Ia9.net]
訂正

//等差数列
//定義に忠実に書いた場合
//r:ret,s:diff,n:n
int sigma(int r, int s, int n) {
 if (n < 1)return 0;
 if (n == 1) return r;
 return r + sigma(r + s, s, n - 1);
}
//メモリ使用量を最適化した場合
int sigma2(int s, int n) {
 if (n < 1)return 0;
 int r = 0, t = s;
 for (; 1 < n; n--, t += s) r = r + t;
 return r;
}

751 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 14:03:25.65 ID:SH0QgRhI.net]
sigma2は最適化された動的計画法
sigmaは「漸化式」の定義に基づいた再帰法

752 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 14:09:21.37 ID:zGjt7Ia9.net]
漸化式で求めた全ての項を
参照する必要があるのならば
動的計画法を用いることはできない

753 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 14:18:04.33 ID:bMqKfWg+.net]
>>733
codepad.org/pUWGRddj
どこを見れば等差数列だと分かるようになるのでしょうか?



754 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 14:20:40.72 ID:IJjvRwCO.net]
>>728
> 正式には「再帰で書くけど 最適化して(再帰ではなく)ループで書く」

ですね!?

最適化してループで書いたのだから
それは再帰ではないということです。

755 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 14:42:48.35 ID:zGjt7Ia9.net]
>>735
ああ、ごめんね
sigmaだから1〜nまでの等差数列の和だよ

漸化式の全ての項を使う
→全てのノードを使う時は動的計画法で最適化できないんよ
そのケースは、ある点からの周囲の経路を探索する場合
ディレクトリ探索だったり、塗りつぶしだったり、つまり全検索をかける場合
こういうのは再帰を使うだろうに

756 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 14:44:53.85 ID:zGjt7Ia9.net]
つまり経路の全検索をかける場合
こういうのは再帰を使うだろうに

757 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 14:56:44.42 ID:IJjvRwCO.net]
あれ? 根本的な前提わかってないの?

誰も再帰を絶対に使わないで書けとか言ってなくて、
ループで簡単にかけるようなものを
わざわざ再帰で書くなよ(笑)って
話なんだけど。

758 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 14:57:36.94 ID:zGjt7Ia9.net]
>>735
sigmaだから1〜n-1までの等差s数列の和
s=3なら
sigma=3+6+9+12+・・・

759 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 15:08:23.80 ID:zGjt7Ia9.net]
//1〜n-1までの等差s数列の和
//定義に忠実に書いた場合
//r:ret,s:diff,n:n
int sigma(int r, int s, int n) {
 if (n < 1)return 0;
 if (n == 1) return r;
 return r + sigma(r + s, s, n - 1);
}
//メモリ使用量を最適化した場合
int sigma2(int s, int n) {
 if (n < 1)return 0;
 int r = 0, t = s;
 for (; 1 < n; n--, t += s) r = r + t;
 return r;
}
べつにどっちで書けって言われても
項をスタックするかしないだけの違いだけど?

760 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:10:18.45 ID:IJjvRwCO.net]
> 項をスタックするかしないだけの違いだけど?

それよりも重要な違いは、
自分の関数自身を呼ぶかどうかだよ。

自分自身を呼ぶのが再帰、
そうでないのは再帰じゃない。

761 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:16:46.56 ID:dKM7sd/0.net]
その定義だと相互再帰は再帰じゃないのかと重箱の隅をつつかれるけど、間違いじゃない。

クソコ

762 名前:テは速やかにNG入れるといいよ。ラーメンが好きかどうかの話をしている中でお茶漬けもラーメンだと強弁するような、話題に入ることができない人だから。 []
[ここ壊れてます]

763 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:18:48.81 ID:ygimYbNM.net]
末尾再帰にあらずんば再帰にあらず



764 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 15:19:27.30 ID:zGjt7Ia9.net]
利点と欠点があって

再帰:書けない漸化式はない、項をスタックするからメモリを消費する
ループ:項の参照が少ない漸化式のみ書ける、項をスタックしないからメモリ使用量は少ない

そんだけ

765 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:23:23.93 ID:ygimYbNM.net]
>>745
ループと再帰は厳密に完全互換ですよ

766 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 15:31:56.99 ID:zGjt7Ia9.net]
>>746
ノード検索とか再帰のノード全てメモしてループするとか
素直に再帰を使っちゃいかんのかいな

767 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:35:58.97 ID:ygimYbNM.net]
>>747
可否の話をしただけ

>>745で可能性に対する言及が間違っているから、それを指摘したにすぎない
forでかけるものは、再帰でもかけるし
再帰でかけるものは、forでもかける

768 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:38:08.67 ID:1TQgpEDy.net]
うわーこいつ最悪だな
自分がほんまモンの馬鹿であるという自覚が全くないバカ
ま、見てる分には面白いけど他人に迷惑掛けんなよ
他人に迷惑を掛けるとなんとかキューゼットとかいう奴みたいに嫌われ者になっぞ

769 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 15:42:58.31 ID:gAQxPGKS.net]
NAS6って宗教板で「重力が神」みたいなことをホザいてた奴だな

770 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 18:40:37.54 ID:zGjt7Ia9.net]
利点と欠点があって

再帰:書けない漸化式はない
項をスタックするからメモリを消費する

ループ:項の参照が少ない漸化式のみ書ける
あるいは項をメモする必要がある
項をスタックしないからメモリ使用量は少ない

そんだけ

771 名前:デフォルトの名無しさん [2015/09/05(土) 19:01:21.79 ID:tTlkULNN.net]
>>751
スタックしない再帰があれば最強じゃん

772 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 19:32:52.27 ID:6bqI6s7I.net]
再帰処理と、再帰関数や再帰呼出とをきちんと区別しろ。

ループは再帰処理の一種だ。

773 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 19:37:09.10 ID:Bq/cKCjD.net]
まず定義に逆らうのやめろよ。
再帰は自己よ呼び出す関数だ。当然実行中の処理手順は無条件にスタックされる。

そして都合よく「再帰」と「ループ」を分けて見たり、全部再帰と言って見たり挙動不審なことをするのもやめれよ。
もはや会話が成り立たん。

ちなみに俺の場合は、一番最初の冒頭のレスで「極論的には再帰もループも同じ」
とした上で、その後は一貫して再帰とループを区別してんだよ。

すなわちCの状態のように関数とスタックの抽象化が出来てる状態で初めてループと再帰があるんだ。


君がやってることは犬小屋も本棚もどっちも「木」で出来てるから同じと言って見たり、
犬小屋と本棚は別物のように書いて見たり、
木の状態を指してこれは「犬小屋」と言って見たり、
「本棚」を指して「犬小屋」と言って見たり、
そもそもなんの話をしてるか分からなくなって見たり。



774 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 19:40:47.01 ID:CMLBJgqr.net]
schemeのnamed letは繰り返し? 再帰?

775 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 20:00:58.23 ID:zGjt7Ia9.net]
double calcPI(double r, double s, double n) {
 double t = 1.0;
 if (s == 1) t = 2.0;
 if (n == 1) return r;
 return t * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1));
}
double calcPI2() {
 double sse = 0.00000000000001; double a = 0.125;
 double b = sqrt(a); double c = 1.0 + 3.0 * b;
 double d = sqrt(c); double e = 0.625;
 double f = d - e; d = 2 * d;
 b = f - b; c = c + f;
 double npow = 4;
 do {
  npow = 2 * npow;  f = (c + d) / 2;
  d = sqrt(c * d);  f = f - d;
  d = 2 * d;  b = b - f;  c = f + d;
 } while (sse < f);
 f = f * f / 4; c = c + d;
 return (c * c - f - f / 2) / (c * b - f) / npow;
}
どっちが簡単だと思う?

776 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 20:25:21.94 ID:zGjt7Ia9.net]
double calcPI(double r, double s, double n) {
 double t = 1.0;
 if (s == 1) t = 2.0;
 if (n == 1) return r;
 return t * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1));
}
double calcPI3(double n) {
 double r = 1.0;
 double s = 1.0;
 double t = 1.0;
 while (1 < n) {
  t = (t * s / (2.0 * s + 1.0));
  r = r + t;
  s += 1;
  n -= 1;
 }
 return 2.0 * r;
}
意地悪が過ぎたが、今度はマジ
どっちが可読性があるの?

777 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 20:34:20.88 ID:zGjt7Ia9.net]
ああ、ちなみにπの漸化式は
2(1+(1/3)+(1/3)(2/5)+(1/3)(2/5)(3/7)+...)
だからね

778 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 20:49:22.97 ID:zGjt7Ia9.net]
変数名がごっちゃにならないように書き直し
double calcPI(double r, double s, double n) {
 double u = 1.0;
 if (s == 1) u = 2.0;
 if (n == 1) return r;
 return u * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1));
}
double calcPI3(double n) {
 double r = 1.0;
 double s = 1.0;
 double t = 1.0;
 double u = 2.0;
 while (1 < n) {
  t = (t * s / (2.0 * s + 1.0));
  r = r + t;
  s += 1;
  n -= 1;
 }
 return u * r;
}

779 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 21:09:08.26 ID:zGjt7Ia9.net]
完全に同じ処理にしたけど、どっちが楽なんだろうね?
double calcPI(double r, double s, double n) {
 double u = 1.0;
 if (s == 1) u = 2.0;
 if (n == 0) return r;
 return u * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1));
}
double calcPI3(double n) {
 double r = 1.0;
 double s = 1.0;
 double t = 1.0;
 double u = 1.0;
 while (0 < n) {
  t = t * s / (2.0 * s + 1.0);
  r = u * (r + t);
  s += 1;
  n -= 1;
 }
 u = 2.0;
 return u * r;
}

780 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 21:16:59.43 ID:zGjt7Ia9.net]
我々は「軍国主義者」を打倒したと、我らが「軍事パレード」で宣言

781 名前:デフォルトの名無しさん [2015/09/05(土) 21:27:52.93 ID:tTlkULNN.net]
>>761
Javaできる?
Javaで2つのint型配列を結合する処理を再帰で書いてみて

782 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 21:55:59.06 ID:zGjt7Ia9.net]
コンパイラ入れんのめんどくさいからパス
#include <iostream>

void init(int * p, int n) {
 for (; 0 < n; n--) p[n] = 0;
}
void disp(int * p, int n) {
 std::cout << std::endl;
 for (int i = 0; i < n; i++) std::cout << p[i] << " ";
 std::cout << std::endl;
}
int recUnit(int i, int j, int *a, int na, int *b, int nb) {
 if (i < na && j < nb) a[i] = b[j];
 else return i;
 return recUnit(i + 1, j + 1, a, na, b, nb);
}
void unit(int *a, int na, int *b, int nb, int *c, int nc) {
 int i;
 i = recUnit(0, 0, a, na, b, nb);
 recUnit(i, 0, a, na, c, nc);
}

783 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 21:56:37.35 ID:zGjt7Ia9.net]
void unit2(int *a, int na, int *b, int nb, int *c, int nc) {
 int i, j;
 for (i = 0, j = 0; j < nb; i++, j++) if (i < na)a[i] = b[j];
 for (j = 0; j < nc; i++, j++) if (i < na)a[i] = c[j];
}
int main()
{
 int a[10], b[5] = { 0, 1, 2, 3, 4 }, c[5] = { 5, 6, 7, 8, 9 };
 init(a, 10); unit(a, 10, b, 5, c, 5); disp(a, 10);
 init(a, 10); unit2(a, 10, b, 5, c, 5); disp(a, 10);
 return 0;
}



784 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:03:28.78 ID:zGjt7Ia9.net]
ミスった
#include <iostream>

void init(int * p, int n) {
 for (; 0 < n; n--) p[n - 1] = 0;
}
void disp(int * p, int n) {
 std::cout << std::endl;
 for (int i = 0; i < n; i++) std::cout << p[i] << " ";
 std::cout << std::endl;
}
int recUnit(int i, int j, int *a, int na, int *b, int nb) {
 if (i < na && j < nb) a[i] = b[j];
 else return i;
 return recUnit(i + 1, j + 1, a, na, b, nb);
}
void unit(int *a, int na, int *b, int nb, int *c, int nc) {
 int i;
 i = recUnit(0, 0, a, na, b, nb);
 recUnit(i, 0, a, na, c, nc);
}

785 名前:デフォルトの名無しさん [2015/09/05(土) 22:07:56.87 ID:tTlkULNN.net]
>>765
    ∩____∩
   /       \
  ./   ●   ●  .', C++やねー ありがとー
  l     ( _●_)    l
 彡、    |∪|    ミ
 i"./   ヽノ    ',ヽ
 ヽi          iノ
  ',         /
   ヽ    /   /
    ',   i!  /
   (___/ \___)

786 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:24:32.63 ID:zGjt7Ia9.net]
ちゃんと出来てるかこっちのほうがいいか
void unit2(int *a, int na, int *b, int nb, int *c, int nc) {
 int i, j;
 for (i = 0, j = 0; j < nb; i++, j++) if (i < na) a[i] = b[j];
 for (j = 0; j < nc; i++, j++) if (i < na) a[i] = c[j];
}
int main()
{
 int a[10], b[4] = { 0, 1, 2, 3 }, c[6] = { 4, 5, 6, 7, 8, 9 };
 init(a, 10); unit(a, 10, b, 4, c, 6); disp(a, 10);
 init(a, 10); unit2(a, 10, b, 4, c, 6); disp(a, 10);
 return 0;
}

787 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:31:18.83 ID:zGjt7Ia9.net]
最適化されているのはループで
漸化式定義に忠実で書きやすいのが再帰だよ

788 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:33:05.45 ID:zGjt7Ia9.net]
>>758
>>760
>>768

789 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:47:45.27 ID:zGjt7Ia9.net]
void recForFunc() { ; }
int recFor(int i, int n, int a) {
 if (n <= i) return i;
 recForFunc();
 return recFor(i + a, n, a);
}


std::cout << recFor(0, 10, 2) << std::endl;

for (i = 0; i < 10; i += 2) recForFunc();
std::cout << i << std::endl;

ループと再帰の違いは
スコープスタックを保存しているかしていないかだけ

790 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 22:57:11.75 ID:zGjt7Ia9.net]
recForはint i = 0,2,4,6,8,10をpushしてpopしながら戻ってくる
forはpopしながら戻る機能はない

791 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 22:59:40.11 ID:IJjvRwCO.net]
ループと再帰の違いは
自分の関数自身を呼び出しているかだけ。

反論あるならどうぞ?

792 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:03:39.21 ID:zGjt7Ia9.net]
int recFor(int i, int n, int a) {
 if (n <= i) return i;
//pushしたiを使う時はここに処理
 recForFunc();
 i = recFor(i + a, n, a);
//popしたiを使う時はここに処理
 return i;
}

793 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:14:34.40 ID:SH0QgRhI.net]
>>772
めっちゃ適当に書くけどこれも再帰





794 名前:class A{
public:
 A* func(){...return this;}
};

A* crnt;
while(true){
 crnt = crnt->func();
//crntへの再帰処理&NEXT処理
}
[]
[ここ壊れてます]

795 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:19:20.41 ID:zGjt7Ia9.net]
ttp://nas6.main.jp/secret/ContainerPtr.htm
ttp://nas6.main.jp/sptr.cpp
ttp://nas6.main.jp/NAS6_cntn_ptr.h
ttp://nas6.main.jp/NAS6_tree_clct.h
実例は↑の
//再帰構文例1
//再帰構文例2
とか

796 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:24:29.51 ID:zGjt7Ia9.net]
//再帰構文例1
みたいに書くのがノード検索を
なんも考えないで書ける

797 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:30:27.24 ID:htzS6HST.net]
>>774
それに近いコードを
「再帰」だって主張している
ページを見つけてきてね(大爆笑)

798 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:32:10.40 ID:htzS6HST.net]
当たり前だけど>>774
funcの中でfuncを呼び出していないから
再帰ではない。

799 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:36:14.88 ID:zGjt7Ia9.net]
ttp://nas6.main.jp/sptr.cpp

template<typename T>
void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root);
template<typename T>
void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk);
とか、ノード検索をなんも考えないでノード検索が出来ちゃう

800 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:38:50.80 ID:zGjt7Ia9.net]
>>777
ttp://msdn.microsoft.com/ja-jp/library/Cc429242.aspx
win32api
FindNextFile()

801 名前:デフォルトの名無しさん [2015/09/05(土) 23:38:57.11 ID:tTlkULNN.net]
再帰構造をループで処理することを再帰処理と言うてんの?

802 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:40:03.04 ID:htzS6HST.net]
>>780
「再帰」って書いてないね。
やっぱり再帰じゃなかったね。
逆の証拠を見つけてくれてあがとう(大爆笑)

803 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:41:35.40 ID:htzS6HST.net]
>>781
アホのオレオレ定義だよなぁ(大爆笑)



804 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:45:35.82 ID:zGjt7Ia9.net]
ttp://www.google.co.jp/?gws_rd=ssl#q=findnextfile%20%E5%86%8D%E5%B8%B0
FindNextFile 再帰

805 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:48:34.61 ID:htzS6HST.net]
>>784
お前がググって
自分で証拠を見つけ出すんだよ(大爆笑)

自分の仕事を(出来ないからって)
他人にやらせるな。

806 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:51:11.81 ID:zGjt7Ia9.net]
>>785
>>784
の検索結果のほぼ全て

807 名前:デフォルトの名無しさん [2015/09/05(土) 23:53:43.47 ID:tTlkULNN.net]
>>783
うむ、再帰構造と再帰処理を混同しておられるとしか思えぬ。

808 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:54:28.66 ID:htzS6HST.net]
>>786
言葉が足りないぞ?(大爆笑)

>>785
>>784
の検索結果のほぼ全てに
FindNextFileを使って再帰を使ったコードが有ります。
再帰というのは自分の関数自身を呼び出すものなので、
大概そのようになっています。

つまり、検索の一番目だと、このコメントの部分が再帰です。
(FindNextFileの行には再帰とは書いていない)

void searchDir(char *lpszDir,HWND hwLst) { /* サブディレクトリ探索 */
  省略
if ((fFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=0 &&
lstrcmp(fFind.cFileName,".")!=0 &&
lstrcmp(fFind.cFileName,"..")!=0){ /* サブディレクトリの処理 */
    省略
searchDir(lpszSDir,hwLst); /* 再帰呼び出し */
}

while (FindNextFile(hSearch,&fFind)) { /* 全ファイルを処理 */
     省略
searchDir(lpszSDir,hwLst);
}
}
FindClose(hSearch);
}

809 名前:NAS6 ◆n3AmnVhjwc [2015/09/05(土) 23:54:52.90 ID:zGjt7Ia9.net]
htzS6HST
お前あほ杉
なんも分かってないなら書き込むな

810 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:55:51.09 ID:htzS6HST.net]
>>789
わかってるから書き込んでいる。

これも「再帰」(大爆笑)

811 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 23:57:07.95 ID:m0Ws+Wye.net]
話がループ・・・おっと違った
話が再帰してる(大爆笑)

812 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:00:00.32 ID:aj7iBxVG.net]
ループと再帰関数を同一だと主張するだけで(それすらオレオレ定義&根拠無し)その先のことを何も言わないのは何故?
「Xは再帰」「Yは再帰」「Zは再帰」って、いくらコードを書いても根拠にならないのは分かってる?
お前が書かなきゃならんことは「Xが再帰であることの根拠」であるのだから、お前の頭の中にしかない「再帰関数の定義」を書かないといけない。
もしオレオレ定義じゃないなら>>742>>714の再帰関数の定義に、お前の書くコードがどう当てはまるのか書かないといけない。

そんで結局NAS6 ◆n3AmnVhjwcの主張は何なの?再帰関数が好きなの嫌いなの?
スレ違いも大概にしなさいよ。

813 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:01:55.86 ID:8kAWPtv+.net]
NAS6 ◆n3AmnVhjwcの主張はこれ。

719 名前:NAS6 ◆n3AmnVhjwc [] 投稿日:2015/09/05(土) 12:25:42.76 ID:zGjt7Ia9 [22/59]
int sum = 0;
 for(int i = 1; i <= 10; i++) {
  sum = sum + i;
}

な、これは再帰だろ、頭が悪いんだから、教授に迷惑をかけるなよ



814 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:02:26.01 ID:miXQ60Mg.net]
>>788
そのsearchDirの書式を簡単にして

ttp://nas6.main.jp/sptr.cpp

template<typename T>
void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root);
template<typename T>
void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk);
とか、ノード検索をなんも考えないでノード検索が出来ちゃう

815 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:02:42.93 ID:8kAWPtv+.net]
ちなみに>>720は再帰じゃないから、
>>720を再帰で書き直すことができる

816 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:03:42.83 ID:8kAWPtv+.net]
>>794
今は再帰かどうかの話をしてるんだが?(大爆笑)

searchDir の中で searchDir を読んでるから再帰。
FindNextFileを使ってるもの全てが再帰になるわけじゃない。

817 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:07:36.08 ID:miXQ60Mg.net]
ttp://nas6.main.jp/secret/ContainerPtr.htm
これをコンソールアプリでビルドしてみ
ノード検索されてるから

で、forとかループに対応するものと言うから
再帰「関数」ではなく再帰「処理」を書いてる

818 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 00:09:15.40 ID:8kAWPtv+.net]
>>797
今は再帰の定義をしている。
全ての再帰はループで処理できる。

ループでノード検索しているから
それは再帰でない証拠(大爆笑)

ttp://nas6.main.jp/secret/ContainerPtr.htm
これをコンソールアプリでビルドしてみ
再帰使わずにノード検索できてるから

あ、ちなみに、このコードは俺が書いたんだよ?

819 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:13:16.02 ID:miXQ60Mg.net]
再帰「関数」だと、再帰「処理」内の、全てのコードを完全実装しなければならなくて
その振る舞いが決定されるから

ttp://nas6.main.jp/sptr.cpp

template<typename T>
void disp_NAS6_tree_clct(NAS6_tree_clct<T>* root);
template<typename T>
void disp_NAS6_tree_clct_key(NAS6_tree_clct<T>* root, string fk);

こう書いたんだよ

820 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:16:13.79 ID:miXQ60Mg.net]
>>798
なにこのカス

821 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:22:17.38 ID:miXQ60Mg.net]
>あ、ちなみに、このコードは俺が書いたんだよ?

じゃあ、デストラクタがどう呼ばれるか説明してみ
つうか、俺のサイトにお前がアップしたの?

822 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/06(日) 00:29:02.94 ID:0zNPIayW.net]
NAS6さん、華麗なる2ちゃんデビューおめ!

823 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:31:05.32 ID:CQ0buOj1.net]
ttp://nas6.main.jp/NAS6_tree_clct.h
数時間で↑のデストラクタの振る舞いが読めたら褒めちゃいます



824 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 00:48:13.59 ID:CQ0buOj1.net]
多分、どうなってるか
さっぱり分からんと思うけどね

825 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:09:59.10 ID:laHESI+6.net]
キチガイの思考過程がさっぱり分からないのは当然の事だろ

826 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:12:42.58 ID:miXQ60Mg.net]
//メモリリーク検出関数
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

メモリリークゼロ

827 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:15:51.45 ID:miXQ60Mg.net]
void main() {
int *p = new int;
#ifdef _MSC_VER

って書くと、int分4バイトだけリーク

828 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:32:13.72 ID:aj7iBxVG.net]
NAS6 ◆n3AmnVhjwcは再帰とは何かも含めて、言葉の定義を他と擦り合わせろ。
それができないなら自分のサイトに引きこもっていろ。

829 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:37:20.23 ID:miXQ60Mg.net]
俺は再帰「処理」を書いてるよ
再帰「関数」ならば、それで完結した書き方を
書かなきゃならなくて適宜運用に不向き

830 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:41:27.92 ID:aj7iBxVG.net]
なら何故ここにいるの?スレタイ読めないの?

831 名前:デフォルトの名無しさん [2015/09/06(日) 01:43:51.10 ID:Zg6i8dH9.net]
>>809
普通は再帰関数で行う処理のことを再帰処理って言うんだと思うよ。

832 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:48:22.86 ID:CQ0buOj1.net]
1 :名無しのプログラマ:2015/08/09(日) 17:46:33.69 ID:Icb40LOY
for,while使うの嫌いで基本的に再帰多用するんだが、だめなの?
皆から敬遠されてる気がする

for,whileって言うから、それに対応するものは
スレタイの再帰「関数」じゃなくて、再帰「処理」だからだよ

833 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 01:55:27.64 ID:CQ0buOj1.net]
ttp://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E7%9A%84%E5%A



834 名前:E%9A%E7%BE%A9
再帰的定義
[]
[ここ壊れてます]

835 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 01:56:17.98 ID:8PjODHJ7.net]
一人でそうゆうこと書いてて満足か?

836 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:08:49.81 ID:miXQ60Mg.net]
「再帰的定義: "再帰的定義"を参照」

//再帰構文例1
template<typename T>
void recHoge1(NAS6_tree_clct<T>* root, string fk) {
 bool parent = false;
 if (&root->recursiveInit() == nullptr) return;
 NAS6_tree_clct<T>* crnt = root;
 //crnt = root; の時のcrntに適用の処理
 //or : //if (crnt->conformkey(crnt, fk) != string::npos) //{...} //キー検索の時
 while (!crnt->recursiveIsEnd(root)) {

  //「再帰的定義: "再帰的定義"を参照」
  parent = false;
  crnt = &(crnt->recursiveNext(root), parent);
  //or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent));


  //if(!parent) //{...} //crnt = Next; の時のcrntに適用の処理
  //else //{...} //親に戻った時の処理
 }
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


837 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:14:12.46 ID:miXQ60Mg.net]
//「再帰的定義: "再帰的定義"を参照」
parent = false;
crnt = &(crnt->recursiveNext(root), parent);
//or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent));

左辺のcrntは、右辺のcrntの子ノードに遷移してんの

838 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:17:05.47 ID:aj7iBxVG.net]
それが文脈が無駄に高いオレオレコードをコピペする理由になると思ったのはどうして?
>>720を再帰だ、などという戯言が通らなくて癇癪起こしているだけじゃないか。

で、>>813の定義に>>720がどう当てはまっているんだ?俺には分からない。
もしもsum = sum + iが再帰的定義なんだと思っているなら、それは単なる代入だから違うぞ。

839 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:20:56.64 ID:CQ0buOj1.net]
//or : //crnt = &(crnt->recursiveKeyNext(root, fk, parent));

ああ、こっちはキーの一致の次のノードで子とは限らんけど

再帰だからもちろん親のノードにも最下層まで行ってから帰ってくるよ

840 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:21:09.18 ID:8PjODHJ7.net]
君、途中で再帰関数と再帰処理の違いを指摘されてなかったか?
なんか無言で言ってることを切り替えてるようだけど。

841 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:24:47.62 ID:miXQ60Mg.net]
「再帰的定義: "再帰的定義"を参照」
f(n+1) = f(n) + i;
sum = sum + i;

842 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:26:17.85 ID:8PjODHJ7.net]
>>820 もっかい聞くけど楽しいか?

843 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:28:04.25 ID:CQ0buOj1.net]
めちゃくちゃ楽しい



844 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 02:32:22.07 ID:8PjODHJ7.net]
ちょっと自己顕示欲が強いんだね
ただそれは迷惑だからそのへんも考えれるようになればいいね

845 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:33:09.17 ID:CQ0buOj1.net]
「再帰的定義: "再帰的定義"を参照」
f(n+1) = f(n) + i;
sum = sum + i;

左辺はn+1項で、右辺はn項

846 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:40:59.21 ID:CQ0buOj1.net]
670 :NAS6 ◆n3AmnVhjwc :2015/09/05(土) 07:33:00.36 ID:zGjt7Ia9
>>657
おま、戻り値を使いまわしたら基本的に再帰じゃないの?。。。

最初に書きました
戻り値の使い回しは基本的にn+1項の定義

847 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:52:22.91 ID:CQ0buOj1.net]
厳密にするわ
「再帰的定義: "再帰的定義"を参照」
f(n+1) = f(n) + i;
sum = sum + i;

左辺はn+1項までの和で、右辺はn項までの和

848 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 02:53:55.79 ID:miXQ60Mg.net]
全然間違ってすらいないよ

849 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:05:39.93 ID:miXQ60Mg.net]
一体、他にどう読んでたんだよ?

850 名前:デフォルトの名無しさん [2015/09/06(日) 03:21:13.07 ID:Zg6i8dH9.net]
>>828
君は他の人が言う再帰をどう読んでたの?

851 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 03:21:47.38 ID:aj7iBxVG.net]
全然違うよ。右辺のsumはどこで定義したんだ?int sum = 0が定義。sum + iでただ更新してるだけ。
一方のfは、初期値も含めて正確に表せばf(n) = if n = 0 then 0 else f(n-1) + 1となっていて、fを定義するのにf自身が必要。
これが再帰的定義。

852 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:30:27.61 ID:miXQ60Mg.net]
おいおい、初項を決めないで再帰(帰納)定義ができるわけはないだろ

853 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 03:33:43.48 ID:CQ0buOj1.net]
おま、数学の帰納法も開始できないのか?



854 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:00:23.70 ID:g2 ]
[ここ壊れてます]

855 名前:NsvO1D.net mailto: ヒントってか答え
初項:f(n = 0) = 0

f(1) = 0 + i
f(2) = f(1) + i = i + i
f(3) = f(2) + i = 2 * i + i
...

f(n + 1) = f(n) + i
[]
[ここ壊れてます]

856 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 04:17:34.08 ID:aj7iBxVG.net]
sumを定義するのにsumを使っていないから駄目で、sum = sum + iは定義じゃなくて単なる更新だから再帰的定義ではない。
int sum = 0とした後にどう更新しようが再帰的とは呼ばないんだよ。

百歩譲ってこれを再帰的定義と呼ぶのなら、当てはまる例が多すぎて何の価値もない概念になる。i++も再帰になるし
int y = 1;
int x = 2;
x = y
としたら偶々x = x/2をという処理になるからこれもお前の言う再帰的定義になるよな。
そんな馬鹿なもんにわざわざ名前を付ける意味も無いし、好き嫌いも語れんよな。

857 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:18:39.27 ID:g2NsvO1D.net]
>>830
では、理系の学部を卒業するのは奇跡だろ

858 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:20:59.76 ID:CQ0buOj1.net]
つ漸化式

859 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:30:52.77 ID:CQ0buOj1.net]
もしかして
ゆとりって、そんなヒドイの?

860 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:34:02.41 ID:CQ0buOj1.net]
そんなわけはないと思いたい

861 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:39:58.28 ID:miXQ60Mg.net]
漸化式から再帰定義をコーディングするのは当たり前だろ?
学部で習わなかった?

862 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:45:55.83 ID:miXQ60Mg.net]
おかしいな
理系ならば情報処理の単位で
漸化式からの再帰定義は
カリキュラムに多分あるはずだけど?

863 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 04:54:07.46 ID:8PjODHJ7.net]
元々な、そんな話は誰一人としてしてないからね。
自信満々に書き込んでる内容自体が全部ずれてるからね。

で、仮にそれが再帰だとして言いたいことはなんだ?



864 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:55:04.91 ID:miXQ60Mg.net]
ttp://www.a.math.ryukoku.ac.jp/~junta/edu/nc/exercise/5.html
>>758
>>760

865 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 04:58:01.28 ID:CQ0buOj1.net]
>>842
みたいなのを自分でやらずに
コピペ提出したんだろ

866 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 05:05:14.35 ID:8PjODHJ7.net]
ベンチ取ってないけどCの場合だと速いのは下だろう

つーか再帰の定義を世間のプログラマと同じにしたらどうだ

867 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 05:25:54.12 ID:g2NsvO1D.net]
バグがあると見るなら訂正
double calcPI(double r, double s, double n) {
 double u = 1.0;
 if (s == 1) u = 2.0;
 if (n == 0) return u * ( r + (r * s / (2.0 * s + 1.0)));
 return u * (r + calcPI(r * s / (2.0 * s + 1.0), s + 1, n - 1));
}
double calcPI3(double n) {
 double r = 1.0;
 double s = 1.0;
 double t = 1.0;
 double u = 1.0;
 while (0 <= n) {
  t = t * s / (2.0 * s + 1.0);
  r = u * (r + t);
  s += 1;
  n -= 1;
 }
 u = 2.0;
 return u * r;
}

868 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 05:31:14.68 ID:CQ0buOj1.net]
ああ元のまんまかな
>>760

869 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 09:07:19.68 ID:8kAWPtv+.net]
>>834
> sumを定義するのにsumを使っていないから駄目で、sum = sum + iは定義じゃなくて単なる更新だから再帰的定義ではない。
> int sum = 0とした後にどう更新しようが再帰的とは呼ばないんだよ。

ホントその通り。
頭の悪さがにじみ出てるよねw

870 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 10:34:04.98 ID:DHZQ2m5W.net]
破壊代入を認めないというルールのもとではどうなるの?

871 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:30:18.37 ID:miXQ60Mg.net]
ヒントってか答え
初項:f(n = 0) = 0

f(1) = f(0) + i = 0 + i
f(2) = f(1) + i = i + i
f(3) = f(2) + i = 2 * i + i
...

f(n + 1) = f(n) + i

sum = sum + i

>>847
どう見ても漸化式通りの振る舞い

872 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 11:31:06.67 ID:8kAWPtv+.net]
再帰の定義を調べてみたら、
関数が自分自身の関数を
呼び出していることって書いてあった。

873 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:36:22.64 ID:miXQ60Mg.net]
あ、

ヒントってか答え
初項:f(n = 0) = 0 i(n = 0) = 1

i(n + 1) = i(n) + 1

f(1) = f(0) + i(0) = 0 + i(0)
f(2) = f(1) + i(1) = i(1) + i(0)
f(3) = f(2) + i(2) = i(1) + i(0) + i(2)
...

f(n + 1) = f(n) + i(n)

sum = sum + i

>>847
どう見ても漸化式通りの振る舞い



874 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 11:40:30.06 ID:8kAWPtv+.net]
再帰っていうのは、漸化式かどうかは関係なくて
関数が自分自身の関数を
呼び出していることらしいね。

875 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:54:16.59 ID:miXQ60Mg.net]
653 :デフォルトの名無しさん:2015/09/04(金) 23:24:17.87 ID:q06Od88z
n-1 までの和に n を足せば nまでの和が得られる、という原理に忠実な計算なんで
再帰以外のなにものでもないんだけど、基礎論触ったことないとわかんないかもね。

656 :デフォルトの名無しさん:2015/09/04(金) 23:29:28.63 ID:vuZU5Hwi
>>653
ループじゃんw

書けば理解できるのか?

int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}

876 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 11:57:27.68 ID:miXQ60Mg.net]
初項:f(n = 0) = 0,i(n = 0) = 1

i(n + 1) = i(n) + 1

f(1) = f(0) + i(0) = 0 + i(0)
f(2) = f(1) + i(1) = i(1) + i(0)
f(3) = f(2) + i(2) = i(1) + i(0) + i(2)
...

f(n + 1) = f(n) + i(n)

↓が↑こういう

877 名前:漸化式になってるのが理解できないのか?

int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
[]
[ここ壊れてます]

878 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:02:33.74 ID:8kAWPtv+.net]
みんなわかってると思うけど、
誰も漸化式であることを否定していない。

漸化式をとく問題を
ループで書くか再帰で書くかって話をしている。

再帰で書くとスタックを消費する。
場合によってはスタックオーバーフローを起こす。

だからスタックオーバーフローを気にするならば
ループで書く。そして多くの場合ループのほうが速い。

という話をしている。

879 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:02:46.10 ID:CQ0buOj1.net]
初項:f(n = 0) = 0,i(n = 0) = 1

i(n + 1) = i(n) + 1

f(1) = f(0) + i(0) = 0 + 1
f(2) = f(1) + i(1) = i(1) + i(0)
f(3) = f(2) + i(2) = i(0) + i(1) + i(2)
...

f(n + 1) = f(n) + i(n)

↓が↑こういう漸化式になってるのが理解できないのか?

int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}

880 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:04:50.09 ID:5yTvo1pN.net]
もうやめといてやれよ
NAS6は自分で新しい言葉を定義するのが好きな精神障害者だろ
こういうのは「言語新作」と言って統合失調症特有の症状

要するに脳内はドーパミンドハドバ出まくりで覚せい剤を決めてるような感じになってるわけだ
これは統合失調症の陽性症状
ただ統合失調症はそんなに甘くなく「バッドトリップ」、すなわち陰性症状もひどい
だから2chに書き込みしてない時は死にたくなってるんじゃね
これじゃまともな日常生活を送れるわけがない
廃人みたいな私生活なんだろうな

なんでム板には精神異常者が多いんだろうねえ

881 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:07:52.59 ID:8kAWPtv+.net]
コピペ始めちゃったしねw

コミュ障であることは明らか

882 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:09:07.82 ID:CQ0buOj1.net]
>>855
それは再帰の最適化だから
ループの再帰なんだけど?
再帰「関数」にせよ、ループ再帰にせよ
再帰(帰納)定義を実装しなければならない

883 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:13:50.10 ID:n7lw0XxH.net]
>>855
末尾再帰じゃないと再帰じゃないっつってんだろ



884 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:16:12.34 ID:CQ0buOj1.net]
初項:f(n = 0) = 0,i(n = 0) = 1

i(n + 1) = i(n) + 1

f(1) = f(0) + i(0) = 0 + 1
f(2) = f(1) + i(1) = i(1) + i(0)
f(3) = f(2) + i(2) = i(0) + i(1) + i(2)
...

f(n + 1) = f(n) + i(n)

↓が↑こういう漸化式になってるのが理解できないのか?

int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}

それは再帰の最適化だから
ループの再帰なんだけど?
再帰「関数」にせよ、ループ再帰にせよ
再帰(帰納)定義を実装しなければならない

勝利 V(ブイ)!!

885 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:20:43.70 ID:miXQ60Mg.net]
>>860
おま、こうしか書けなくて
int hoge(){
 //処理
 return hoge();
}

こう書けないの?
int hage(){
 //再帰push処理
 int i = hage();
 //再帰pop処理
 return i;
}

886 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:25:45.01 ID:5yTvo1pN.net]
おくすり飲み忘れてるよNAS君
ハイの時間が長いほどローの時間が長くてひどいのは君が一番よく知ってるだろう

887 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:29:41.96 ID:miXQ60Mg.net]
ははは、論理で敵わないと、人格攻撃をして醜態をさらす

888 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:33:58.57 ID:8PjODHJ7.net]
>>864
こういっちゃなんだが、そう思ってるのは君だけだろう。
誰もがそれを逆に見てると思う。

889 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:36:27.22 ID:miXQ60Mg.net]
人格攻撃の書き込みが、書いた本人の醜態をさらしている以外のなんだと思うの?

890 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:37:41.03 ID:8PjODHJ7.net]
読むところはそこじゃないでしょ。
最初から読んだけど都合のいいことばっか書いたり読み飛ばしたり話変えたりってのが多いと思うよあなた

891 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:37:54.03 ID:miXQ60Mg.net]
>>865
>>861

892 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:39:49.40 ID:8PjODHJ7.net]
典型的な例がそれね

893 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:40:45.30 ID:8PjODHJ7.net]
一応言うけど、親切7割で書いてんだよ



894 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:46:22.23 ID:miXQ60Mg.net]
int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
左辺のn+1項までの和を右辺のn項までの和を使って再定義します
他にどう読める?

895 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:49:12.16 ID:8PjODHJ7.net]
そんな話じゃない

896 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 12:50:45.59 ID:CQ0buOj1.net]
俺は親切10割で書いてるよ

897 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 12:53:54.77 ID:o0S33vFB.net]
再帰関数ってのは問題に対する言葉じゃなくて、それをどうコーディングするかに対する言葉

898 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:04:05.67 ID:miXQ60Mg.net]
ttp://akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf

再帰関数講義pdf

899 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:15:58.86 ID:VTGxMrVA.net]
なにそのURL。だからなんだ?
あからさまに>>871は再帰じゃないって書いてあるが

900 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:22:34.79 ID:1eGH5HCM.net]
スレ

901 名前:読んだ
現実を直視することって大切だよなって思いました
[]
[ここ壊れてます]

902 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:37:10.03 ID:8kAWPtv+.net]
int sum = 0;
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}

これは明らかに再帰じゃないなw

これを再帰と説明しているページがアレば
いってくれ。

ないなら、黙ってろ。

903 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:38:20.61 ID:8kAWPtv+.net]
おっと、黙ってろっていうのは、
>>878に対してだけだだ。
別に>>878と関係ないことを話すのは構わない(笑)



904 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:45:24.53 ID:VTGxMrVA.net]
予測だが、抽象化や概念を扱うのが極端に苦手なんだろう
なのでそれを伴う会話、論理、もしくはそれ以前に単語の意味が理解出来ない

905 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:46:24.96 ID:miXQ60Mg.net]
ttp://akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf

再帰関数講義pdf

>>878
数列の和の再帰実装の項目が読めないの?

つづけて、

2.2 なぜ,再帰関数なのか?

再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,
どちらを使うべきだろうか?
両方使える場合は繰り替えし文を使うべきである.
計算速度も早いし,メモリの消費も少ないからである.
ではどこで,再帰関数の登場機会があるのか.
単純な問題であれば繰り替えし文の方が良いが,
複雑な問題となると再帰関数で記述はできるが,
繰り替えし文ではプログラムが大変困難な場合がある.

906 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:48:14.91 ID:8kAWPtv+.net]
>>881
これのことだろうけど、
普通に、sumの中でsumを使っており、
そのsumの部分に再起するって書いてある。

/ / =========================
25 / / ユーザー定義関数 sum
26 / / =========================
27 i n t sum ( i n t n ) {
28
29 i f ( n == 1 ){
30 r e t u r n 1 ;
31 } e l s e {
32 r e t u r n sum ( n?1) + n ; / / 再帰する
33 }
34
35 }

907 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:49:21.03 ID:8kAWPtv+.net]
2 再帰関数とは
2.1 再帰関数の例
自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て
みよう.



2.2 なぜ,再帰関数なのか?
再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき
だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ
の消費も少ないからである.で

908 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 13:51:10.04 ID:VTGxMrVA.net]
なんでループと再帰が同じって言ってるやつが、
両方使える場合はループだの、複雑なことは再帰だのになんだよ。
言ってることが支離滅裂。

909 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 13:57:22.43 ID:miXQ60Mg.net]
>>884
それはスコープスタックを

ループは保存しないで行ったっきり

再帰関数はpushして最下ノードまで行って
popして戻りつつ新たな下ノードのpush&pop検索をするからだよ

910 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:00:39.98 ID:VTGxMrVA.net]
>>878
この方法にしとけ

for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
「これは再帰関数です」とか「これは再帰ではありません」とか明示的に書いてあるやつがいい
それなら理解出来るだろ

あと再帰やループの制御構造は、forやwhileや関数の呼び出しだからな。
決してsimではない

911 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:01:24.37 ID:VTGxMrVA.net]
>>885
保存しないのがループなんだろうが

912 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:07:04.25 ID:miXQ60Mg.net]
ttp://ja.wikipedia.org/wiki/%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88
クイックソート

そんなに言うならループで書いてみてよ

913 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:20:43.68 ID:VTGxMrVA.net]
繋がりが分からん



914 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:21:51.14 ID:miXQ60Mg.net]
>>884
>>885
>>888

915 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:22:35.47 ID:VTGxMrVA.net]
ただの一度とて俺はループで何が出来るだの出来ないだの一覚えはない
頭大丈夫か?

で?ルールで書けってことは「ループじゃない物」があるってことだよな?
それをここにいるほぼ全ての人は再帰と読んでるわけだが

916 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:28:26.07 ID:miXQ60Mg.net]
>なんでループと再帰が同じって言ってるやつが、
>両方使える場合はループだの、複雑なことは再帰だのになんだよ。
>言ってることが支離滅裂。

>両方使える場合はループだの、複雑なことは再帰だのになんだよ。
これが支離滅裂と思うんなら、クイックソートをループで書いてごらん

917 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:47:29.00 ID:LToipCL/.net]
書くのはおまえだろうが。


918 名前:俺はループと再帰の区別してるから。
再帰はループとは別にあるし、再帰が良いと思った時は再帰だ。俺はな。
そして支離滅裂なのはそのURLじゃなくておまえだ。

おまえは区別しないなら全部同じ書き方でかけ。
ループと再帰と言う単語すら使うな。区別しないなら徹底的に区別するな。

それ以前に
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
これが再帰と書かれたサイトなり資料なり探し終わるまで黙っとけ。多数に言われてんだから。
[]
[ここ壊れてます]

919 名前:デフォルトの名無しさん [2015/09/06(日) 14:51:28.16 ID:pbpREKnW.net]
>>888
>>892

ループで書いた
peace.2ch.net/test/read.cgi/tech/1434079972/8

920 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:53:47.20 ID:LToipCL/.net]
知らんわんなもん
おまえはループと書くな。区別しないのだから

921 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:55:26.13 ID:miXQ60Mg.net]
分かってませんでしたって言うなら言えばいいよ
クイックソートのループ実装はムチャ振りだから

922 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 14:57:32.04 ID:LToipCL/.net]
なんの話だ?
関係ない話なら「後から」付き合うけど?
ごちゃごちゃ言ってないでさっさと探して来い。

923 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 14:59:58.98 ID:miXQ60Mg.net]
>>894
push&popって、わざわざ作ってループにするくらいなら
素直に再帰関数使えよ

push&popのループは実装にもよるけど再帰関数とほぼ同じ



924 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:00:49.47 ID:LToipCL/.net]
ループは再帰なのにループの実装は無茶振りねぇ
ふーーん

ま、これについても探してきてから相手してやるか

925 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:01:20.67 ID:miXQ60Mg.net]
>>898
>>885

926 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:03:20.65 ID:LToipCL/.net]
それはループと再帰を区別してるっていうんだよ。
単語が必要になった時点でな

927 名前:デフォルトの名無しさん [2015/09/06(日) 15:03:29.78 ID:JSf18249.net]
>>898
ループで実装しとけばpopの過程で残りの処理やらんでいいわってときに
処理を打ち切れるんだよ。そういう意味では再帰をループで実装する意味はあるかと。

928 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:03:31.85 ID:miXQ60Mg.net]
>>899
>>885
push&pop実装してループすりゃ良いけど、それなら素直に再帰関数使え

929 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:04:44.43 ID:8kAWPtv+.net]
2 再帰関数とは
2.1 再帰関数の例
自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て
みよう.



2.2 なぜ,再帰関数なのか?
再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき
だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ
の消費も少ないからである.で

930 名前:デフォルトの名無しさん [2015/09/06(日) 15:05:50.49 ID:JSf18249.net]
>>903
再帰よりもループのが都合いいことあるんよ
関数呼び出しを途中で打ち切ること出来ぬでしょ

931 名前:デフォルトの名無しさん [2015/09/06(日) 15:06:30.03 ID:JSf18249.net]
>>904
これ。

932 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:06:41.80 ID:miXQ60Mg.net]
>>902
再帰関数に強制終了フラグを渡して
再帰呼び出しの直後にそのフラグをチェックすれば
強制終了できるけど?

933 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:09:02.09 ID:LToipCL/.net]
>>903
pushとpopでループさせるなんて一言も言ってないし、
再帰使わないとも一言も言ってないし、
どうゆう会話の繋がり構造してんだ?
本気で頭大丈夫か?

しかもそれ完全にループと再帰分けて考えてるよな



934 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:09:21.10 ID:miXQ60Mg.net]
>計算速度も早いし,メモリの消費も少ないからである
push&popを実装するなら、正直、コンパイラに任せたほうが早いかもよ

935 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:10:20.50 ID:LToipCL/.net]
>>907
馬鹿じゃねぇの
それは再帰として使ってるとは言わん
普通ではない事態だ

936 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:11:18.97 ID:LToipCL/.net]
>>909
それをお前はあたかもそうではないような書き込みしてたよな

937 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:15:01.76 ID:miXQ60Mg.net]
>>908

>>751
>>885

938 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:16:40.15 ID:LToipCL/.net]
それ俺の書き込みじゃないけど。
それと言葉に詰まると全く意味の分からない安価書くのやめれ

939 名前:デフォルトの名無しさん [2015/09/06(日) 15:17:02.84 ID:JSf18249.net]
>>907
アプリケーションを強制終了?
ちょっとそれはクソすぎると思うよ

940 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:20:07.58 ID:LToipCL/.net]
for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
それとこれが再帰っつーのがお前の主張だからね。
話散らすのに一生懸命なようだけど。

941 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:22:44.17 ID:miXQ60Mg.net]
>>910

>>905
の振りだから
>>907
だろ

int recHoge(bool& esc){
 int i;
 //push処理
 i=rechoge(esc);
 if(esc) return i;
 //pop処理
 return i;
}

942 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:27:09.64 ID:LToipCL/.net]
>>916
あんな、出来る出来ないじゃなくて
関数として

943 名前:扱われるえき概念を、処理中の内部からスタック操作なんてしねぇんだよ []
[ここ壊れてます]



944 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:31:29.36 ID:LToipCL/.net]
んで結局、ループと再帰を区別しないと言うお前の主張は、
ループや再帰と言う単語を用いないとできないわけだね。
ふーーん

945 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:33:09.34 ID:miXQ60Mg.net]
何コメントが気に入らないの?

int recHoge(bool& esc){
 int i;
 //再帰のスタックがpushされている時の処理をここに書く
 i=rechoge(esc);
 if(esc) return i;
 //再帰のスタックがpopされている時の処理をここに書く
 return i;
}

946 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:34:42.95 ID:LToipCL/.net]
はい全然会話がつながってない。それは関係ない。

947 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:34:48.30 ID:miXQ60Mg.net]
>ループと再帰を区別しないと言うお前の主張
これが俺の主張だというならアンカくれ

948 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:37:06.65 ID:LToipCL/.net]
探すのめんどくさい。
しかし一つや二つではない


for(int i = 1; i <= 10; i++) {
 sum = sum + i;
}
より確実なのはこっち

949 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:37:11.26 ID:miXQ60Mg.net]
>>920

>>917
じゃあ、↑がイミフ

950 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:40:50.25 ID:miXQ60Mg.net]
>>922
探せないなら
ループと再帰を区別しない
これはおれの主張じゃないからね

sumについては
>>856

951 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:42:44.84 ID:LToipCL/.net]
お前の理解度なんて知らんわ。
その話題の発端は俺じゃないからそこについて続ける気もしない。

952 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:44:30.52 ID:LToipCL/.net]
漸化式になってようとなってまいと再帰には関係ない

953 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:45:19.69 ID:LToipCL/.net]
お前の言い分だとプログラムのほぼ全てが再帰になる



954 名前:デフォルトの名無しさん [2015/09/06(日) 15:47:23.50 ID:JSf18249.net]
>>894
1個は末尾再帰なので単純にループでいいかと
https://ideone.com/r1BBhE

955 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:51:29.03 ID:miXQ60Mg.net]
広辞苑から
漸化式
数列または関数列のいくつかの要素の間に成り立つ一般的な関係式
公比rの等比数列a1,a2,...,an,...におけるan+1=ranの類

「再帰的定義: "再帰的定義"を参照」
 an+1=ran

956 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:51:35.63 ID:8kAWPtv+.net]
俺が某大学のテキスト探してきた。

大学のテキストだから書いてあることの
信頼性は高いだろう。

再帰関数講義pdf
akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf


2 再帰関数とは
2.1 再帰関数の例
自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て
みよう.



2.2 なぜ,再帰関数なのか?
再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき
だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ
の消費も少ないからである.で

957 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 15:55:01.72 ID:LToipCL/.net]
>>929
そんな広辞苑は捨てな
しかもそれプログラム用語の再帰じゃないから。
そんなことも分かってないようだけど。

958 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 15:59:49.39 ID:miXQ60Mg.net]
ttp://ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html

再帰処理

959 名前:デフォルトの名無しさん [2015/09/06(日) 16:00:19.25 ID:JSf18249.net]
日本語は文脈依存文法なので
同じ語句であっても文脈に応じて意味が変わるのよね。
再帰という同じ言葉であっても概念が異なっているのは明らかっすね。
変数への再帰的な代入と関数の再帰呼び出しとは違うものっすね。
プログラムで再帰といったときは関数の再帰呼び出しが一般的かな。

960 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:02:09.24 ID:miXQ60Mg.net]
再帰的とは

あるものが定義されている場合,

その定義の中に,更にその定義されるべきものが,
簡単化されて,含まれているとき,

それは「再帰的である」と言われます。
循環論法に似ていますが,少し違います。
再帰的はその部分に含まれるものが全く同じものではなくて,
簡単になったもので,最終的終了条件が明示されているものです。

961 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:02:41.93 ID:LToipCL/.net]
どうして100のうち1しかないものを持ってくる?
現場でそんな使い方してる人間なんていないだろよ

962 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:07:43.63 ID:miXQ60Mg.net]
漸化式が再帰だと思えないのは変な風に、頭が固いか、悪いか、なだけ

963 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:12:02.55 ID:miXQ60Mg.net]
つか、再帰「関数」のみが、再帰だと思ってるのが間違いだから



964 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:13:02.94 ID:LToipCL/.net]
再帰はただの定義。

自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.

関数として抽象化されいてそのように扱う人間がいて、
その上でその内部から自身を呼び出すものが再帰。
プログラムにおいて漸化式は再帰と関係ない。

そしてその主張をするメリットもそのように使用するメリットもなく、そのように単語を使う習慣ももメリットもない。

965 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 1 ]
[ここ壊れてます]

966 名前:6:14:07.91 ID:LToipCL/.net mailto: 再帰と書いた場合は再帰関数を示す。以後そうしとけ。 []
[ここ壊れてます]

967 名前:893 mailto:sage [2015/09/06(日) 16:21:21.57 ID:uhlPSgY9.net]
>>928
>単純にループでいいかと
うん,そのつもりだったんだが
さて >>928 で 配列 {3, 3, 5} をソートしてみてくれないか?

968 名前:デフォルトの名無しさん [2015/09/06(日) 16:23:38.18 ID:JSf18249.net]
>>937
会話をするときは相手がどういう概念を
述べているのか理解するようにしないと
言葉の表面から別の概念を連想して相手が間違いだと言っても
話が噛み合わないだけっすよ。

969 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:25:07.28 ID:miXQ60Mg.net]
>>760
この場合は、
再帰「関数」とループで、ほぼ等価な処理を書いたのだが
この処理は、どちらも再帰処理だよ
定義に忠実な書き方と、最適化された書き方で
ほぼ等価な漸化式の処理であって、これらの何が気に食わないの?

970 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:25:30.37 ID:fH7ggWtR.net]
ここまで狂ってるともう駄目だろ、、、
脳の一部は正常に機能しているようだけど、他の部分が完全に機能していない
そういうのを普通「発達障害」「アスペ」「ADHD」とか言うんだけどな
好きなのを取れ
要するに一生何をしてもこのままです

971 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:25:40.08 ID:8kAWPtv+.net]
俺がもう一つ見つけてきてやったぜ

ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html

★再帰を使わない例

この階乗関数を Basic プログラムとして実現してみると,(Tiny Basic には階乗関数 Factorial が内蔵されていますから,
実際にこのようなプログラムを書く必要はありませんが。)

Function Kaijyou(n)
If n = 0 then
Kaijyou = 1
Else
Kaijyou = Kaijyou(n-1)*n
End if
End Function

となります。しかし,実は階乗関数は,再帰を使わなくても,
次のように実現することが出来ます。

Function Kaijyou(n)
F = 1
For i = 1 to n
F = F * i
Next i
Kaijyou = F
End Function

↑再帰を使わなくても,次のように実現することが出来ます。

972 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:28:08.20 ID:LToipCL/.net]
>>942
その発想がすでに狂ってる。

973 名前:デフォルトの名無しさん [2015/09/06(日) 16:29:29.10 ID:JSf18249.net]
>>940
やってみた。次は何をやればいい?服はもう脱いだ。
https://ideone.com/1x5POb



974 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:30:15.65 ID:LToipCL/.net]
また狂った勘違いされそうだけど、当然ながら記述どうこうの話ではない。
そんな話は一切していない

975 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:36:31.57 ID:fH7ggWtR.net]
正当な評価すら「人格攻撃」としてしか受け取れない
脳が狂っている度合いがひどければひどいほど、傍からみて「あ、こいつ完全におかしい」と
分かるようになるんだが、本人は1ミリも狂っているとは思っていない
病識が全くないわけだ

軽症だと治りやすいよ
でも末期のガンとか生まれつき片手がないとかはどうしようもないだろう
この後者に相当するのがこいつ

976 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:37:24.66 ID:miXQ60Mg.net]
論理で勝てないと人格攻撃で自分の醜態をさらす

977 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:38:50.50 ID:fH7ggWtR.net]
>>949
な、ほらそうだろ?お前、無職だろ?こんな奴雇う会社日本にねえよ
アメリカにでも行って一芸を買ってもらうこったな
でも見てたらその一芸すら怪しいようだが

978 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:39:04.92 ID:miXQ60Mg.net]
>>760
この場合は、
再帰「関数」とループで、ほぼ等価な処理を書いたのだが
この処理は、どちらも再帰処理だよ
定義に忠実な書き方と、最適化された書き方で
ほぼ等価な漸化式の処理であって、これらの何が気に食わないの?

さて?これのどこがどう狂っているのか説明してくださいな

979 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:39:14.91 ID:LToipCL/.net]
一番論理と遠いのはお前だよ
だからこうゆう展開になってしまう

980 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:40:05.81 ID:LToipCL/.net]
>>951
そこに結びつける発想。

981 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:40:52.39 ID:fH7ggWtR.net]
>>951
もうその発言だけで完全に狂ってると分かっちゃうよ

982 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:42:56.55 ID:miXQ60Mg.net]
感情的にではなく論理的に反駁してください

983 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:43:54.24 ID:LToipCL/.net]
だから狂った勘違いされないよう



984 名前:ノ「記述にもなんにも関係ない」と、
普通の人にはしないような備考をわざわざ付けたのに、それでも勝手に勘違いしてるだろ
それを指して狂ってるって言ってんだよ

だから何も会話が成り立ってない。関係ない思うを関係あると思う。
そして概念のつながりである論理のやりとりが出来てないのに自分が出来てないと気づかない。
[]
[ここ壊れてます]

985 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:45:18.24 ID:fH7ggWtR.net]
>>955
感情的にはまったくなっておりません
むしろ感情的になっているのはそちらの方だと思います
こういうのを「感情転移」と言います
もう少し言うと「投影機制」と言います

自分が感情的になっているのを認められないので、相手が感情的になっていると
錯覚してしまうのです
電車に乗ってて隣の電車が発車すると、自分の乗ってる電車が逆方向に動き出した
と錯覚するだろ?それとよく似ている

986 名前:デフォルトの名無しさん [2015/09/06(日) 16:47:03.14 ID:JSf18249.net]
>>955
それはこっちのセリフです!牛さんのように反芻してください!!
どうこれ?

987 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:48:22.69 ID:LToipCL/.net]
むしろ俺は書き始めた時の方が感情的だ
いまは至って冷静だ

988 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:48:38.17 ID:miXQ60Mg.net]
>>760
この場合は、
再帰「関数」とループで、ほぼ等価な処理を書いたのだが
この処理は、どちらも再帰処理だよ
定義に忠実な書き方と、最適化された書き方で
ほぼ等価な漸化式の処理であって、これらの何が気に食わないの?

だから↑がどう論理的に狂ってるか具体的にかけよ

989 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:49:14.49 ID:LToipCL/.net]
>>960
その発想だって言ってんだろ

990 名前:893 mailto:sage [2015/09/06(日) 16:49:40.04 ID:uhlPSgY9.net]
>>948
よくわかるが,今回の場合は反駁側も切れ味が悪い,揚げ足を取りきれていない
篭手狂人は「行っていることが正しい」可能性はないわけではない
問題は「不正確な表現」,百歩譲っても「表現が独特すぎて伝わっていない」

991 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:50:18.66 ID:fH7ggWtR.net]
>>959
あららここまでひどいとただの投影じゃなくて投影性同一視が入ってるみたいですね
境界性パーソナリティ障害とか自己愛性パーソナリティ障害も併発してるようです
投影性同一視とは他人を利用した自己嫌悪です
本当は自分を嫌悪したいのですがどうしてもそれが嫌なのでまともな他人を嫌悪します
これはしばしば犯罪に発達します
危険ですよ

992 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:51:40.98 ID:fH7ggWtR.net]
>>962
だとすればまあちょっとは自覚があるんじゃないですかね
そうなると治療すれば治る可能性もあるのに惜しいですね
このまま人生を棒に振っちゃうようで

993 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:53:01.63 ID:fH7ggWtR.net]
よく犯罪者が言ってるじゃないですか
「俺は悪くない!悪いのは社会だ!」
裁判所でそれ叫んでみてくださいよ
誰も認めちゃくれませんから



994 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 16:57:12.75 ID:LKKBkxwK.net]
これ、まさか次スレもやるつもりですか?

995 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/06(日) 16:57:13.89 ID:0zNPIayW.net]
プログラミングの現場で再帰と言ったら再帰関数や再帰呼び出しのこと。
情報科学で漸化式は再帰的定義であると言える。
しかし、プログラミングでプログラムに書いた漸化式を「再帰処理」と言うと、
初心者にとって混乱極まりない上に迷惑であり、不適切な表現である。

996 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 16:59:16.85 ID:miXQ60Mg.net]
>>960

>>760
のようにほぼ等価な処理が書けるのに
再帰「関数」で実装されたもののみが「再帰処理」だとしたら
ループで最適化実装されたものは「ループ処理」で
再帰処理とは違う処理なのですか?

997 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:00:59.76 ID:LToipCL/.net]
>>960
それ自体が関係ないのになぜその書き込みを引っ張る?
その処理が気に食う気に食わないの話はどっから出てきた?
なんで急に脈絡なくその書き込みの話をする?
漸化式は関係ないからって言われた直後、なんでその相手に自慢げに漸化式の話をする?
定義に忠実がなんだ?だからどうなんだ?満たされるのはお前の自己満足だけだろ
しかも

998 名前:自分の思い込みだけで狂ったように連呼する定義。
最適化?誰がそんなの望んだ?誰がそんな話した?噛み合ってないよな。


狂ってるんだよ
狂ったものは論理と最も遠い。
論理じゃないものに対して論理では答えられない。
[]
[ここ壊れてます]

999 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:05:43.20 ID:aWMMHCvX.net]
>>968
そう。

そしてさらに、関数は処理だけを指すものではない。
人間側が関数を関数と言う概念として扱い、そのように人間が振舞うことで初めて関数は関数になる。
当然それと同等の物が再帰にある。

普通はこんな説明不要だが、お前はこの説明も受けておく必要がある。

1000 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:05:55.81 ID:8kAWPtv+.net]
とりあえず俺が見つけてきた解説をみて。
再帰とは何かを勉強した方がいい。

ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html

★再帰を使わない例

この階乗関数を Basic プログラムとして実現してみると,(Tiny Basic には階乗関数 Factorial が内蔵されていますから,
実際にこのようなプログラムを書く必要はありませんが。)

Function Kaijyou(n)
If n = 0 then
Kaijyou = 1
Else
Kaijyou = Kaijyou(n-1)*n
End if
End Function

となります。しかし,実は階乗関数は,再帰を使わなくても,
次のように実現することが出来ます。

Function Kaijyou(n)
F = 1
For i = 1 to n
F = F * i
Next i
Kaijyou = F
End Function

↑再帰を使わなくても,次のように実現することが出来ます。

1001 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:06:58.08 ID:miXQ60Mg.net]
>漸化式は関係ないからって言われた直後、
>なんでその相手に自慢げに漸化式の話をする?

漸化式から再帰処理コードを組み立てる
スタックオーバーロードがあるから、再帰関数は奥の手で
ループで書けるならそれに越したことはない
ループでひどく複雑になるようなときに、再帰関数で書く

1002 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:08:24.25 ID:8kAWPtv+.net]
そして、もう一つの解説。俺が某大学のテキスト探してきた。

大学のテキストだから書いてあることの
信頼性は高いだろう。

再帰関数講義pdf
akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf


2 再帰関数とは
2.1 再帰関数の例
自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て
みよう.



2.2 なぜ,再帰関数なのか?
再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき
だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ
の消費も少ないからである.で

1003 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:08:25.12 ID:aWMMHCvX.net]
>>972
だからその発想が狂ってる。
そんな話はしていない。

だから論理にならない



1004 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:13:29.91 ID:miXQ60Mg.net]
>>970
>>760
あのさ、このπを求めるコードで、まず関数入出力を見て
実装が、再帰関数実装とか、ループ実装とか、
普通、いちいち、そこまでこだわらないと思うんだけど
こだわるのは、精査検証が必要なときだけだろ

精査検証なら
>>972

1005 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:14:49.58 ID:fH7ggWtR.net]
>>959
酒買ってきた
まさにこれだよな
「論理的じゃないものに対して論理では答えられない」
狂ってる奴が「論理的に反駁してください」と言っているのを聞くと笑いそうになる

あのさあ・・・まず先に論理的に話すべきなのはそちらじゃないかね、って
でもそれが全く出来ない
だから発達障害なんだよ

1006 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:15:55.83 ID:fH7ggWtR.net]
ちごた
×>>959
>>969

>狂ってるんだよ
>狂ったものは論理と最も遠い。
>論理じゃないものに対して論理では答えられない。

俺が言いたい事と全く同じ

1007 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/06(日) 17:16:46.42 ID:0zNPIayW.net]
関数かループかは実行スピードに大きく影響する。円周率を求めるプログラムではスピードが重要。

1008 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:17:41.58 ID:8kAWPtv+.net]
俺が持ってきた再帰の定義について
反論ができなくなってしまっているようだなw

ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html

★再帰を使わない例

この階乗関数を Basic プログラムとして実現してみると,(Tiny Basic には階乗関数 Factorial が内蔵されていますから,
実際にこのようなプログラムを書く必要はありませんが。)

Function Kaijyou(n)
If n = 0 then
Kaijyou = 1
Else
Kaijyou = Kaijyou(n-1)*n
End if
End Function

となります。しかし,実は階乗関数は,再帰を使わなくても,
次のように実現することが出来ます。

Function Kaijyou(n)
F = 1
For i = 1 to n
F = F * i
Next i
Kaijyou = F
End Function

↑再帰を使わなくても,次のように実現することが出来ます。

1009 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:17:44.80 ID:miXQ60Mg.net]
ttp://ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html
再帰は使うべきか
このように見てくると,再帰プログラムは効率の良くないプログラムと思うかもしれません。
実はある意味ではその通りです。それでは使う必要のないものなのでしょうか?
これも使わなくて良ければと言う前提に立てばその通りです。
一般に次のことが言えます。
•再帰プログラムは計算機に負荷をかけるプログラムである。
•時によっては,膨大な負荷をかけることもある。
•簡単に非再帰プログラムとして書けるものは再帰プログラムを使うべきではない。
それでも,再帰プログラムが基本的であると言われるのは何故でしょうか。
それは再帰プログラムが大きな力を秘めているからです。つまり
•再帰プログラムでは簡単に書けるが,非再帰プログラムはかなり複雑なプログラムになってしまうようなものがある。
ということです。
このような問題が意外とあるのです。再帰プログラム技法を,身につけたら,プログラミングを行う際,次のような視点で考えるのが良いかもしれません。
•まずは,非再帰プログラムで問題を考えてみる。
•難しいと判断した場合,再帰プログラムで考えてみる。

1010 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:18:47.18 ID:8kAWPtv+.net]
そして、もう一つの解説。俺が某大学のテキスト探してきた。
自分自身を呼び出したものが再帰なのだ。

大学のテキストだから書いてあることの
信頼性は高いだろう。

再帰関数講義pdf
akita-nct.jp/saka/lecturenote/2010/2e/text/recursive.pdf


2 再帰関数とは
2.1 再帰関数の例
自分自身を呼び出す関数を再帰関数 (recursive function) という.また,自分自身を呼び
出すことを再帰呼出し (recursive call) という.言葉の定義はともかく,具体的な例を見て
みよう.



2.2 なぜ,再帰関数なのか?
再帰関数と繰り返し文のどちらを使ってもプログラムが書ける場合,どちらを使うべき
だろうか? 両方使える場合は繰り替えし文を使うべきである.計算速度も早いし,メモリ
の消費も少ないからである.で

1011 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:20:26.48 ID:aWMMHCvX.net]
>>975
はいここでまた関係ない話になる。
今してる話は何が再帰か(定義と概念)、であって、
手段の問題ではない。
当然>>972もなんの関係もない。

1012 名前:ただの手順。

そんな考えだから再帰中に再帰中の内部記憶を操作するとような発想を平気でする。
再帰を再帰として扱ってはいない。これは概念の問題。
再帰を扱う人がそれを再帰扱いしなければ、当然それは再帰ではない。

再帰かどうかと言うのはそういった所でも大きく区分けされる。
[]
[ここ壊れてます]

1013 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:24:43.59 ID:miXQ60Mg.net]
>>982

>>932
>>934



1014 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:27:47.47 ID:aWMMHCvX.net]
だからその返信に詰まった時に安価書くのやめれっつーの
お前の再帰の定義が問題扱いされてるのに、
自分の正当性を得るために自分の定義を証明手段に使ってどうする
馬鹿なのか

1015 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:28:54.74 ID:1q8+1kZD.net]
>>984
自分が狂ってる事を正当化するために自分が書いた狂った定義を持ち出すのは
もはや負けを認めているのに等しいよな

1016 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:29:38.53 ID:miXQ60Mg.net]
>>932
のリンクの大学教授の定義をコピペしたのが
>>934


1017 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:32:05.22 ID:1q8+1kZD.net]
>>986
今度は権威を使うのか
"虎の威を借る狐"
でもその虎が狂っていたらどうなる?ただの殺人虎だ

1018 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:34:21.82 ID:8kAWPtv+.net]
>>986

> >>932
> のリンクの大学教授の定義をコピペしたのが
> >>934
> だ

>>932のリンクってこれだよね?
ews2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Recursive.html
★再帰を使わない例
この階乗関数を Basic プログラムとして実現してみると,(Tiny Basic には階乗関数 Factorial が内蔵されていますから,
実際にこのようなプログラムを書く必要はありませんが。)

Function Kaijyou(n)
If n = 0 then
Kaijyou = 1
Else
Kaijyou = Kaijyou(n-1)*n
End if
End Function

となります。しかし,実は階乗関数は,再帰を使わなくても,
次のように実現することが出来ます。

Function Kaijyou(n)
F = 1
For i = 1 to n
F = F * i
Next i
Kaijyou = F
End Function
↑再帰を使わなくても,次のように実現することが出来ます。

1019 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:34:24.36 ID:aWMMHCvX.net]
もう一度教えてやろう。
それは普通は使わない定義

1020 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:34:49.74 ID:miXQ60Mg.net]
だから、お前らは、俺に対して、感情的反駁しかしてねーし

1021 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:36:03.31 ID:1q8+1kZD.net]
>>988
うはw
捏造入ってたのか
こりゃちゃんとリンク先見ないとな

>>990
何回でも言います
感情的になってるのはそっちです

1022 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:37:16.64 ID:1q8+1kZD.net]
再帰定義は、ありまぁーす!みたいな展開になってきたな

1023 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:37:25.62 ID:miXQ60Mg.net]
>>989
算数からやり直したらどう?
算数→数学→情報処理となって
再帰定義がなんぞやって定義されているんだよ



1024 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:37:27.94 ID:aWMMHCvX.net]
あと答えられなくなったとき必ず
答えなくなったり話散らすね。
直接的に繋がりのある返答はかなり珍しい

他の人が増えてきて読みにくいんで終わり

1025 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:38:07.17 ID:uhlPSgY9.net]
>>946
おーうまくいくね>>984 では,これに苦心したんだが‥

1026 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:38:14.61 ID:aWMMHCvX.net]
>>993
数学用語とプログラム用語は別物だと言ったはずだ

1027 名前:NAS6 ◆n3AmnVhjwc [2015/09/06(日) 17:39:58.36 ID:miXQ60Mg.net]
>>996
お前の中ではな

1028 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:40:39.85 ID:aWMMHCvX.net]
ついにそうゆうことしか書けなくなったわけだね

1029 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:40:58.46 ID:1q8+1kZD.net]
>>993
おやお前数学出来るのか
じゃあマクスウェルの方程式とかナビエ・ストークスの方程式の意味は説明出来るんだよな?

1030 名前:デフォルトの名無しさん [2015/09/06(日) 17:41:53.70 ID:LZy823VQ.net]
暇人か

1031 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 17:42:12.67 ID:1q8+1kZD.net]
>>994
自分を守るのが精一杯でちゃんと他人の質問に答えれなくなってるよな

1032 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1033 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef