5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

        再       帰        

1 :デフォルトの名無しさん:2006/01/01(日) 23:04:15
うわああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
ああああああああああああああああああああああああああああああああああああ
!!!!!!!!!!

2 :最凶VB厨房:2006/01/01(日) 23:18:08
>>2
どうした?

3 :デフォルトの名無しさん:2006/01/01(日) 23:22:04
>>3
何やってんだよ

4 :デフォルトの名無しさん:2006/01/01(日) 23:24:18
>>4
4様ですか?

5 :デフォルトの名無しさん:2006/01/01(日) 23:26:38
>>4
4様です。

6 :デフォルトの名無しさん:2006/01/01(日) 23:31:15
>>6
4様でしたね。

7 :デフォルトの名無しさん:2006/01/02(月) 01:49:43
int fact(int n)
{
if(!n) puts("う"), return 1;
else if(n == 1) puts("わ"), return 1;
else puts("あ"), return fact(n - 1);
}
int main(void)
{
return fact(1000);
}

8 :デフォルトの名無しさん:2006/01/02(月) 03:51:41
まったくもって再帰にする必要がねえな

9 :デフォルトの名無しさん:2006/01/02(月) 05:03:02
末尾再帰という

10 :デフォルトの名無しさん:2006/01/02(月) 07:33:11
>>7
これだと

[出力結果]
あ*999
わう

になってしまうような気がする俺ガイル。
俺はただの馬鹿野郎ですか?

11 :デフォルトの名無しさん:2006/01/02(月) 08:58:41
>>10
そもそも数字は出てこないし
足してもいないし掛けてもいない

12 :デフォルトの名無しさん:2006/01/02(月) 09:02:12
ああ、こういうことか

int fact(int n)
{
if(!n) puts("う"), return 1;
else if(n == 1) puts("わ"), return 1;
else fact(n - 1), puts("あ"), return 1;
}
int main(void)
{
return fact(1000);
}

13 :デフォルトの名無しさん:2006/01/02(月) 09:03:30
わうあ*9999
になってしまうな orz

14 :デフォルトの名無しさん:2006/01/02(月) 09:05:15
「う」は出てこないんじゃないか?w


15 :デフォルトの名無しさん:2006/01/02(月) 09:09:14
ん?
新たな初心者スレ?w

16 :デフォルトの名無しさん:2006/01/02(月) 10:53:22
>>10-11
あを999個書くの面倒で、あ*999としたんだろ。

int fact(int n)
{
if(!n) return 1;
else if(n == 1000) puts("う"), return 1;
else if(n == 999) puts("わ"), return 1;
else if(n == 9) puts("!"), return 1;
else if(n < 9) puts("!"), return 1;
else fact(n - 1), puts("あ"), return 1;
}
int main(void)
{
return fact(1000);
}
こうか?自動的にw改行されるとして、また、1000個ほどあると仮定して。

17 :デフォルトの名無しさん:2006/01/02(月) 15:05:09
>>16
これだと「う」しか表示されないワナ

18 :デフォルトの名無しさん:2006/01/02(月) 15:10:08
酔っ払い供めが。
素直にこう書けばいいんだよ。

int fact(int n)
{
if(!n) puts("う");
else if(n == 1) puts("わ");
else puts("あ");
return fact(n - 1);
}
int main(void)
{
return fact(1000);
}


19 :デフォルトの名無しさん:2006/01/02(月) 16:26:07
int fact(int n)
{
if(!n) return 1;
else if(n == 1000) puts("う"), fact(n - 1);
else if(n == 999) puts("わ"), fact(n - 1);
else if(n == 9) puts("!"), fact(n - 1);
else if(n < 9) puts("!"), fact(n - 1);
else puts("あ"), fact(n - 1);
}
int main(void)
{
return fact(1000);
}


20 :今年初プログラミング:2006/01/02(月) 16:44:56
fact = fact' 0
  where
    fact' 0 = 'う' : fact' 1
    fact' 1 = 'わ' : fact' 2
    fact' n = 'あ' : fact' (n+1)

main = putStrLn $ take 1000 fact

21 :デフォルトの名無しさん:2006/01/02(月) 16:55:58
int fact(int n)
{
if( !n ) return 1;
else if(n == 1000) puts("う");
else if(n == 999) puts("わ");
else if(n == 9) puts("!");
else if(n < 9) puts("!");
else puts("あ");
fact(n - 1);
}
int main(void)
{
return fact(1000);
}


22 :デフォルトの名無しさん:2006/01/02(月) 16:58:15
>>20
fact = 'う' : 'わ' : aaa
where
aaa = 'あ' : aaa


23 :デフォルトの名無しさん:2006/01/02(月) 17:00:09
何を盛り上がってるんだお前らw

24 :デフォルトの名無しさん:2006/01/02(月) 17:05:10
再帰不能

25 :デフォルトの名無しさん:2006/01/02(月) 17:06:37
2chのスレ立てって簡単ですねって見本

26 :デフォルトの名無しさん:2006/01/02(月) 17:28:02
fact = 'う':'わ':fact' [] "あ"
  where
    fact' x y = x ++ fact' y ("ぁ" ++ x ++ y)

27 :デフォルトの名無しさん:2006/01/02(月) 17:31:07
C初心者とHaskell初心者が入り乱れてるなw

28 :デフォルトの名無しさん:2006/01/02(月) 18:16:50
(defun fact (x)
  (case x
    (0 (write-string "うわ"))
    (t (fact (1- x)) (write-char #¥あ))))

29 :デフォルトの名無しさん:2006/01/02(月) 18:38:35
```s.わ`.うi``s.あi

厳密には再帰じゃないけど。

30 :デフォルトの名無しさん:2006/01/02(月) 18:50:53
再帰が難しいとか言ってる奴は、
現代のプログラミングの基本中の基本が出来ていない似非プログラマ。

31 :デフォルトの名無しさん:2006/01/02(月) 19:07:26
あ、末尾再帰じゃないとまずかったかな。

(defun fact (x)
    (progn
        (write-string "うわ")
        (labels
            ((fact1 (y) (unless (zerop y) (write-char #¥あ) (fact1 (1- y)))))
            (fact1 x))))

これで末尾呼び出しになってる?

32 :デフォルトの名無しさん:2006/01/02(月) 20:26:36
let fact len =
 let rec f id ed vl =
  if id >= ed
   then vl
   else match id with
    0 -> f (id + 1) ed (vl ^ "う")
   | 1 -> f (id + 1) ed (vl ^ "わ")
   | n -> f (id + 1) ed (vl ^ "あ") in
 f 0 len ""

let main =
 print_endline (fact 1000)

33 :デフォルトの名無しさん:2006/01/02(月) 22:23:33
次のお題をどうぞ

34 :デフォルトの名無しさん:2006/01/02(月) 22:39:55
>ALL このスレへ行け。
ttp://pc8.2ch.net/test/read.cgi/tech/1136124255/

35 :デフォルトの名無しさん:2006/01/02(月) 22:56:57
>>35

36 :デフォルトの名無しさん:2006/01/03(火) 00:23:24
相互再帰
http://pc8.2ch.net/test/read.cgi/tech/1048088635/215

37 :デフォルトの名無しさん:2006/01/04(水) 19:04:24
void a(int n) {
 if (n == 0) {
  puts("!!");
  return;
 }
 puts("A");
 b(n-1);
}

void b(int n) {
 if (n == 0) {
  puts("?");
  return;
 }
 puts("H");
 b(n-1);
}

int main() {
 a(100);
}

38 :デフォルトの名無しさん:2006/01/09(月) 01:47:33
再帰ってどのくらいまでスタックすることが出来るんでしょうか?

39 :デフォルトの名無しさん:2006/01/09(月) 01:52:11
>>38
それは、コンパイル時に設定する最大スタックサイズしだいじゃないかな??


40 :デフォルトの名無しさん:2006/01/09(月) 01:53:44
100%?

41 :デフォルトの名無しさん:2006/01/09(月) 01:56:19
UNIX だとプロセス起動時にスタックサイズ変えられるけど

42 :デフォルトの名無しさん:2006/01/09(月) 08:00:02
qsort使って要素数10000000くらいの配列でソートしたら時々暴走するんです。
やはり再帰が原因のスタックオーバーフローでしょうか?

43 :デフォルトの名無しさん:2006/01/09(月) 08:11:13
気になるんなら、スタックをどのくらい使ってるか見てみれば良いじゃん
スタック使いきってるなら暴走じゃなくて segv とかでプロセスがクラッシュ
するんじゃないか?

44 :デフォルトの名無しさん:2006/01/09(月) 08:39:07
再帰でスタック消費するの?だっせー言語プゲラ

45 :デフォルトの名無しさん:2006/01/09(月) 11:37:01
M$のqsortは再帰はつかってないな

46 :デフォルトの名無しさん:2006/01/09(月) 14:26:04
>>44
末尾再帰に限定しないの?
ヒープとか使うの?

47 :デフォルトの名無しさん:2006/01/10(火) 22:48:14
>>44
くわしきゅ

48 :デフォルトの名無しさん:2006/01/11(水) 08:48:49
スレ移動してください
http://pc8.2ch.net/test/read.cgi/tech/1136124255/l50

49 :デフォルトの名無しさん:2006/01/11(水) 10:49:31
fact(0) :- !.
fact(N) :- N > 0,write(うわ),M is N * -1,fact(M).
fact(N) :- write(あ),M is N + 1,fact(M).

50 :デフォルトの名無しさん:2006/01/11(水) 11:50:55
>36
それは再帰違う

51 :デフォルトの名無しさん:2006/01/11(水) 13:07:39
>>49
fact(0) :- !.
fact(N) :- integer(N),N > 0,write(うわ),M is N * -1,fact(M).
fact(N) :- integer(N),N < 0,write(あ),M is N + 1,fact(M).

が、好ましいコード。

52 :デフォルトの名無しさん:2006/01/15(日) 12:08:19
x=y
y=x

53 :デフォルトの名無しさん:2006/01/15(日) 14:51:17
それは再帰違う

54 :デフォルトの名無しさん:2006/01/21(土) 20:21:35
>>54
再帰かよ。

55 :デフォルトの名無しさん:2006/01/21(土) 20:53:22
http://pc8.2ch.net/test/read.cgi/tech/1136124255/55

56 :デフォルトの名無しさん:2006/01/26(木) 00:45:04
>>54がスタックあふれを起こしましたよ

57 :デフォルトの名無しさん:2006/03/26(日) 17:30:15
a (x) = x(b)
b (x) = x(a)
a (b)

58 :デフォルトの名無しさん:2006/03/27(月) 22:44:22
>>57
Cで書こうとしてちょっと悩んだ。

59 :デフォルトの名無しさん:2006/05/14(日) 22:33:22
L(G):
G=(N,Σ,P,S)
N={S,A,B,C,D}
Σ={う,わ,あ,!,!}
P={
 S→うA,
 A→わB,
 B→あB|C,
 C→!D,
 D→!D|ε
}
S=S

60 :デフォルトの名無しさん:2006/07/23(日) 23:33:34
おもすれ

61 :デフォルトの名無しさん:2006/07/28(金) 19:17:27
tst

62 : ◆YY8ebcAR4s :2006/09/17(日) 21:35:57
tst tst

63 :デフォルトの名無しさん:2006/09/23(土) 23:54:40
1,Memechan
http://uniuni.dfz.jp/moeclc2/?0&0K1lp3K5ok820coasKtUyTzXBYDK
2,クロワッサン
http://uniuni.dfz.jp/moeclc3/?0&97&0K1lp2K3K5lfwUxJzn5CYEJPYWO
3,legal
http://uniuni.dfz.jp/moeclc2/?0&0q01603o04C5HbJtq0yJAqaLEMJPP
4,めだまおやぎ
5,クルサード
6,ケルディン
7,ささらん
http://uniuni.dfz.jp/moeclc3/?2&97&0K1lp3K5KoJvUyUzTEK
8,Rviz
9,Tyranno
10,ANOTHER
http://uniuni.dfz.jp/moeclc2/?2&0F1ek2K3K5KsJtUyn5BSDUQ15
11,ムラディン
http://uniuni.dfz.jp/moeclc4/?3&97&0K1mg3K5p0tpkuUzKEoQPnIWbM
12,ミルカッセ
http://uniuni.dfz.jp/moeclc2/?2&1ek2K3I4F54a6r57KHTIJJKNI
13,ディアス
14,キュー
http://uniuni.dfz.jp/moeclc3/?2&97&1602K3I4F5C6K7KIUJJKJOKPY
15,Ligy
http://uniuni.dfz.jp/moeclc4/?0&97&0K1ie3K4bW5I8JkVvKzTEKNKXN


64 :デフォルトの名無しさん:2006/10/31(火) 09:50:27
a

65 :デフォルトの名無しさん:2006/11/02(木) 03:18:10
GNU's Not UNIX.

66 :デフォルトの名無しさん:2006/11/04(土) 16:00:45
そして再び最下層から1へ帰る

67 :デフォルトの名無しさん:2006/11/04(土) 16:25:26
おもしろそーなスレ発見。

でも、再帰させるときは迷う。
再帰しなくて済む方法がないか考える。

処理速度が下がりそうじゃない?

でも、個人的に再帰好き。巧く書けると気持ちいい。


68 :デフォルトの名無しさん:2006/11/04(土) 22:44:14
俺は末尾再帰を信じるぜ。
だから再帰を除去しない。

末尾再帰以外でそこがボトルネックだと形式的にスタックを使う形に置き換えるのはするけどな。

69 :デフォルトの名無しさん:2007/01/08(月) 15:53:42
コンポジットパターンを実装すると
大体イヤでも再帰になる

15 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)