質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

176閲覧

C++ 再帰について

write07

総合スコア9

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/06/16 17:14

前提・実現したいこと

10,9,8,7,6,5,6,7,8,9,
9,8,7,6,5,4,5,6,7,8,
8,7,6,5,4,3,4,5,6,7,
7,6,5,4,3,2,3,4,5,6,
6,5,4,3,2,1,2,3,4,5,
5,4,3,2,1,0,1,2,3,4,
6,5,4,3,2,1,2,3,4,5,
7,6,5,4,3,2,3,4,5,6,
8,7,6,5,4,3,4,5,6,7,
9,8,7,6,5,4,5,6,7,8,

発生している問題・エラーメッセージ

エラーメッセージ 95,93,91,89,87,85,96,97,98,99, 94,92,90,88,86,84,83,82,81,80, 75,73,71,69,67,65,76,77,78,79, 74,72,70,68,66,64,63,62,61,60, 35,29,23,17,11,5,41,47,53,59, 30,24,18,12,6,0,36,42,48,54, 31,25,19,13,7,1,37,43,49,55, 32,26,20,14,8,2,38,44,50,56, 33,27,21,15,9,3,39,45,51,57, 34,28,22,16,10,4,40,46,52,58, ### 該当のソースコード ```C++ ソースコード using MapData = std::vector<std::vector<int>>; void A(MapData& range, int x, int y) { range[y][x] = 0; MapData result(range); B(range, result, x, y, 0); } void B(MapData& range, const MapData& mapData, int x, int y, int move) { if (range[y][x] < 0) { move -= mapData[y][x]; range[y][x] = move; } int up = y + 1; int down = y - 1; int left = x - 1; int right = x + 1; if (up < (int)range.size() && range[up][x] < range[y][x]) { B(range, mapData, x, up, move); } if (down >= 0 && range[down][x] < range[y][x]) { B(range, mapData, x, down, move); } if (left >= 0 && range[y][left] < range[y][x]) { B(range, mapData, left, y, move); } if (right < (int)range[0].size() && range[y][right] < range[y][x]) { B(range, mapData, right, y, move); } } 以上の通りです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

前方宣言が必要です。
宣言も定義もしないまま関数を使うことはできません。A関数の中でB関数を呼び出していますので、A関数の定義の前に

C++

1void B(MapData& range, const MapData& mapData, int x, int y, int move);

を書けばOKです。(最後の ; を忘れないように)

投稿2018/06/16 17:22

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

write07

2018/06/16 17:31

失礼しました。関数定義はこちらには記述していないのですが自身のプログラム上には記述しております。エラーに書いてあるのは現在の表示結果です。これを再帰とmove -= mapData[y][x];を用いて実現したい事に書いてある通りにする方法が分からずに質問させていただきました。説明不足で申し訳ありません。
Chironian

2018/06/16 17:56 編集

すいません。そこまでやる気力はないので、どなたか親切な方が見えるのをお待ち下さい。 ただ、ご質問には、どのようにしてこれらの関数を呼び出しているのか?、結果をどのように表示しているのか?等の必要な情報の記載がありません。ですので、このままでは解を見つけることは現実的ではないと思います。 問題が再現するプログラムを全て提示された方がよいと思います。ただ、その量があまりに多いと回答はつきにくくなります。(回答者は皆さんボランティアですから。)ですので、問題が再現する最小限のプログラムにして提示されると回答が付きやすくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問