ショッピングモール  


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

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

 詳しくはこちら



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

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


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

No.3177

再帰的プログラムについて
投稿者---トマト(2004/12/07 22:31:03)


はじめて利用させていただきます。
質問なのですが、以下のようなCプログラム(再帰と二分法を使って交点を求めるプログラムです)を作りました。
以下のプログラムに再帰的手続きがあるとしたらどこにあるんでしょうか。また無いのであればどのように再帰的手続きを付け加えればよろしいのでしょうか。教えてください。
#include <stdio.h>
double f(double x)
{
double a=3.2;
   return (x)-a*(a*(x)*(1-(x)))*(1-(a*(x)*(1-(x))));
}
double nib(double a,double b,double t)
{
long double x;
if (f(a) * f(b)> 0.0){
printf("解は見つからない。\n");
}else{
while(b-a>t){
x = (b + a)/2.0;
if (f(x)*f(a)>0.0){
a=x;
}
else{
b=x;
}
}
printf("合成関数によって求める交点のうち一つの解は\n%Lfです。",x);
}
}
main()
{
long double x0,x1,t;
printf("知りたい範囲を二つ、小さい値から順に小数第2位まで入力して下さい。\n(0.01から1.11がオススメです。)\n");
scanf("%Le",&x0);
scanf("%Le",&x1);
t=1.0e-5;
nib(x0,x1,t);
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:再帰的プログラムについて 3178 通りすがり 2004/12/07 22:45:49
<子記事> Re:再帰的プログラムについて 3179 トマト 2004/12/07 23:19:10
<子記事> Re:再帰的プログラムについて 3181 ぽこ 2004/12/08 00:26:31
<子記事> Re:再帰的プログラムについて 3182 通りすがり。 2004/12/08 01:09:24
<子記事> Re:再帰的プログラムについて 3190 トマト 2004/12/09 01:02:05


No.3178

Re:再帰的プログラムについて
投稿者---通りすがり(2004/12/07 22:45:49)


人が見て見やすいと思いますか?
掲示板の利用上の注意も読めないのですか?


この投稿にコメントする

削除パスワード

No.3179

Re:再帰的プログラムについて
投稿者---トマト(2004/12/07 23:19:10)


ごめんなさい。
開発環境はXPでCPad for LSI C-86です。



この投稿にコメントする

削除パスワード

No.3180

Re:再帰的プログラムについて
投稿者---ぽこ(2004/12/08 00:23:54)


以下の使用上の注意に対しての苦言かと。。
 ※ソースの添付は「HTML変換ツール」で字下げ!





この投稿にコメントする

削除パスワード

No.3181

Re:再帰的プログラムについて
投稿者---ぽこ(2004/12/08 00:26:31)


>以下のプログラムに再帰的手続きがあるとしたらどこにあるんでしょうか。

何処にもありません。

>また無いのであればどのように再帰的手続きを付け加えればよろしいのでしょうか。教えてください。

nib()を再帰関数で記述します。

#再帰の意味は理解されているんですよね?




この投稿にコメントする

削除パスワード

No.3182

Re:再帰的プログラムについて
投稿者---通りすがり。(2004/12/08 01:09:24)


>以下のプログラムに再帰的手続きがあるとしたらどこにあるんでしょうか。また無いのであればどのように再帰的手続きを付け加えればよろしいのでしょうか。

再帰的手続き、の意味が分かっているのならば、分かると思うのですが。
再帰的手続きとは、「ある手続きのなかで、自分自身(手続き)を呼び出す手続き」のことです。
この場合は、nib()関数の中で、もう一度nib()関数を呼び出すようにすればいいと思います。


この投稿にコメントする

削除パスワード

No.3189

Re:再帰的プログラムについて
投稿者---江戸門電鉄(2004/12/09 00:04:04)


誤解を招きそうなので、突っ込み。
関数aから関数bを呼び、関数bから関数aを呼ぶのも勿論再帰です。
要するに、自分を呼ぶだけじゃないということですね。
>再帰的手続きとは、「ある手続きのなかで、自分自身(手続き)を呼び出す手続き」のことです。


この投稿にコメントする

削除パスワード

No.3190

Re:再帰的プログラムについて
投稿者---トマト(2004/12/09 01:02:05)


みなさま親切にお答えいただきありがとうございます。


この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity