
学校の課題がわからないので教えてください。
1. 次の関数recfunc()は関数内で自分自身を呼び出す再起関数である。
int recfunc(int x){
if(x<=0)return -1;
else if(x==1) return 3;
else return 3*recfunc(x-1)-2;
}
引数に1,2,3,4,5,...を与えたときの返り値を求めよ。その結果から、一般に
整数値nが与えられたとき、どのような値が計算されるか推測せよ。
一体何を返す関数だろうか?またどのようにその計算が実現されているか
を簡潔に述べよ。
2.どのような再帰関数も、再帰を用いない関数に書き換えることができる。
問題1の関数recfunc()と同じ引数、同じ返り値をもつ再帰を用いない関数
func()を作成せよ。
2問も質問してすみません。
このプログラミングのレポートを提出しなくてはならないので困ってます。
何卒よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは
レポートは自分でやりましょうね。
C言語のプログラム自身が解らないのですか?
それともプログラムの一部分が解らないのですか?
とは言っても困っているようですので、
1.
recfunc(1) = 3
recfunc(2) = 3*recfunc(1)-2 = 3*3-2 = 7
recfunc(3) = 3*recfunc(2)-2 = 3*7-2 = 19
recfunc(4) = 3*recfunc(3)-2 = 3*19-2 = 55
recfunc(5) = 3*recfunc(4)-2 = 3*55-2 = 163
・・・
recfunc(n) = 3*recfunc(n-1)-2
って、プログラムに書いてある通りですね。
あとはご自分で肉付けしてくださいな。
2.
int func(int x)
{
int i ;
if ( x <= 0 ){
return -1 ;
}
for (i=3 ;x>1 ;x--){
i = 3*i-2 ;
}
return i ;
}
とかで良いと思うけど、人のプログラムを、そのまま提出したり、変数名を変えた程度で提出するの、どうかと思うので、自分の物にしてくださいね。
こんばんは。
即レスありがとうございます。
自宅のPCにUNIXのソフトがないためにプログラム実行、お礼が遅くなってすみませんでした。
>>>1のほうは数列として考えるのはわかりました。
初項=3、等差数列の一般項の式an=3*(an-1)-2
というのも問題文からわかるのですが、これをどのようにプログラムすればいいのかわかりません。
>引数に1、2、3、4、5・・・を与えたときの返り値を求めよ。
これに対して、an=1のとき、an=2のとき・・・とプログラムしていき、最後に整数値nを入れたときにはどうなるか、ってことを実行すればいいのかと私は思っているのですが、関数のプログラミングを作るのは初めてでテキストや上記の回答を見ながら考えたんですがよくわかりませんでした。
>>>2のほうはそのまま実行したところ、mainの未定義のシンボルエラーが出てしまいました。上記のプログラムの他に肉付けをしなければいけなかったんでしょうか?
回答して頂いたのにお礼が遅くなって本当に申し訳ありませんでした。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Visual C++ フレームを中央に表...
-
C++ bmp 透過処理
-
C言語プログラミング 漸化式に...
-
ヒストグラム均等化処理プログラム
-
C言語の関数について。
-
16bitで乱数を生成する方法
-
nCrの計算
-
並列処理プログラム
-
カレンダークラス
-
シェアウェアの作り方
-
C言語でDOS画面のプログラム(...
-
returnの使い方
-
DXライブラリによるパズルゲー...
-
偶数パリティ
-
whileとifを使い偶数を出すには
-
Pythonで入力した値以外の最大...
-
C言語で簡単なパックマンゲーム...
-
direct3dで当たり判定
-
再起呼び出しの回数をカウント...
-
| (or) を使った関数の引数の作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
条件が多い場合
-
再起呼び出しの回数をカウント...
-
argvのNULLチェック
-
C言語でDOS画面のプログラム(...
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
複数の共有メモリの作成
-
C++ Debug Errorについて教えて
-
C++ bmp 透過処理
-
関数とビット列
-
OpenCVによる4値化について
-
コマンドプロンプトのウィンド...
-
ヌメロンのプログラム
-
for 分についてです
-
DXライブラリとC言語 fwrite関...
-
16bitで乱数を生成する方法
-
プログラミングに関して
-
C++で表を作成したいのです ...
おすすめ情報