No.14076![]() |
ループ文から再帰に変換する方法 投稿者---SAI(2004/05/17 13:47:48) |
||
ープ文(while文, for文, do〜while文)を再帰に変換する方法ってありますか? 教えて下さいおねがいします。 |
No.14077![]() |
Re:ループ文から再帰に変換する方法 投稿者---RiSK(2004/05/17 14:37:44) |
||
>ープ文(while文, for文, do〜while文)を再帰に変換する方法ってありますか? あります。 |
No.14080![]() |
Re:ループ文から再帰に変換する方法 投稿者---RiSK(2004/05/17 15:03:13) |
||
#include <stdio.h> #define LOOP 5 void recurrent(int i) { if (i > 0) { printf("i == %d\n", i); i--; recurrent(i); } } int main(void) { int i; puts("for loop"); for (i = LOOP; i > 0; i--) { printf("i == %d\n", i); } puts("recurrent"); recurrent(LOOP); return 0; } |
No.14079![]() |
Re:ループ文から再帰に変換する方法 投稿者---ニタチ(2004/05/17 14:43:49) |
||
>ープ文(while文, for文, do〜while文)を再帰に変換する方法ってありますか? ループ文の中の処理によると思いますが、 一応簡単なやつを↓。あってるかな? #include<stdio.h> int saiki(int n); int main(void) { int i; int n = 10; int sum = 0; /* ループ文を使って */ for( i = n ; i > 0 ; i-- ) { sum += i; } printf("sum = %d\n", sum ); /* 再帰を使って */ sum = saiki( n ); printf("sum = %d\n", sum ); return 0; } int saiki(int n) { return ( n > 0 ) ? (n + saiki( n - 1 )) : (0); } |