←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.3964

再帰呼び出しの回数カウント
投稿者---MIE(2005/06/09 11:34:58)


int puzzle(int N) {
   i++;       
   if (N == 1) return 1;
   if (N % 2 == 0)
     return puzzle(N/2);
   else return puzzle(3*N+1);
}

このプログラムにおいて、1から任意の値までのそれぞれの再帰呼び出し回数をカウントして出力するプログラムを下のように作りました。

#include <stdio.h>
#include <stdlib.h>
int i;
int puzzle(int N) {
   i++;       
   if (N == 1) return 1;
   if (N % 2 == 0)
     return puzzle(N/2);
   else return puzzle(3*N+1);
}
int main(int argc, char **argv)
  { 
    unsigned N = 0;
    int n;
    if( argc!=2 ) exit(-1);
    n= atoi(argv[1]);
     while(N < n) { 
      i = 0;
      N++;
      puzzle(N);
      printf("%d %d\n", N, i);
     }
   return 0;
  } 



これで正しいでしょうか。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:再帰呼び出しの回数カウント 3965 επιστημη 2005/06/09 13:51:24
<子記事> Re:再帰呼び出しの回数カウント 3985 επιστημη 2005/06/10 05:05:58


No.3965

Re:再帰呼び出しの回数カウント
投稿者---επιστημη(2005/06/09 13:51:24)


>このプログラムにおいて、1から任意の値までのそれぞれの再帰呼び出し回数をカウントして出力するプログラムを下のように作りました。
>...
>これで正しいでしょうか。

なにか問題があるのですか? 期待される値にならないのでしょうか?
'期待される値'の算出が困難なら、もっと簡単な関数:

/* 呼び出し回数は N+1 となる */
int puzzle(int N) { return N == 0 ? 0 : (N + puzzle(N-1)); }

について同様のコードを埋め込み、確認すればいい。


この投稿にコメントする

削除パスワード

No.3967

Re:再帰呼び出しの回数カウント
投稿者---επιστημη(2005/06/09 15:38:46)


>期待している値より少ない値が出力されてしまいます。

実行結果:
1 1
2 2
3 8
が得られました。

1 (1-call)
2 → 1 (2-call)
3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 (8-call)
なので期待値と一致しますけど。



この投稿にコメントする

削除パスワード

No.3968

Re:再帰呼び出しの回数カウント
投稿者---επιστημη(2005/06/09 15:40:28)


>また、int puzzle(int N)の中身は替えてはいけないといわれました。

だからぁ、簡単なコードで呼び出し回数のカウント法が正しいか検証し、元に戻せ、と。



この投稿にコメントする

削除パスワード

No.3985

Re:再帰呼び出しの回数カウント
投稿者---επιστημη(2005/06/10 05:05:58)


何故に発言を削除するかな。
回答者/閲覧者に無礼やないか。



この投稿にコメントする

削除パスワード

No.4002

掲示板ご利用上の注意について
投稿者---elder(2005/06/11 06:57:44)


>何故に発言を削除するかな。
>回答者/閲覧者に無礼やないか。

別スレッドの削除に影響を受けていると思われます。
初めは、削除が無礼にあたると知らないと思いますので…。

ということで、管理人様へ。
【掲示板ご利用上の注意】にこの事について書いておくのはどうでしょう?


この投稿にコメントする

削除パスワード

No.4003

Re:投稿の削除について
投稿者---管理人(2005/06/11 11:37:30)


>別スレッドの削除に影響を受けていると思われます。
>初めは、削除が無礼にあたると知らないと思いますので…。
>
>ということで、管理人様へ。
>【掲示板ご利用上の注意】にこの事について書いておくのはどうでしょう?

今まで、投稿の削除につきましては、投稿者の自由にお任せする方針でおりましたが、
ご指摘のように、返信の付いた投稿を削除することが掲示板に与える影響を考えない
安易な削除が多すぎるように思います。

返信の付いた投稿の削除は原則禁止にすることにいたしました。
返信の付いた投稿を訂正したい場合には、再度訂正の投稿をしてくださるようにお願いいたします。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity