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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

Q&A

解決済

2回答

1594閲覧

C,C++で割り算を再帰関数

ponzu1563

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

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

0グッド

0クリップ

投稿2021/09/02 07:49

編集2021/09/02 08:51

前提・実現したいこと

C++の課題で1から10までの数を同じものを選ばずにいくつか選んで
入力した数を割り切れたらYesそうでなければNoという処理を再起関数で作りたい

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

main.cpp:関数内 'int func(int、int)': main.cpp:14:1:警告:制御が非void関数の終わりに達しました[-Wreturn-type] 1ケース2.000秒の問題でRE(ランタイムエラー)との表示

該当のソースコード

C++

1#include <iostream> 2using namespace std; 3 4int func(int n,int m) { 5 if (n == 1) { 6 return 1; 7 } 8 else if(m == 1){ 9 return 0; 10 } 11 if (n%m == 0) { 12 func(n / m, m - 1); 13 } 14 else { 15 func(n, m - 1); 16 } 17} 18 19int main() 20{ 21 int kazu=10,num; 22 cin >> num; 23 24 if (func(num, kazu)) { 25 cout << "Yes\n"; 26 } 27 else { 28 cout << "No\n"; 29 } 30 31 return 0; 32}

試したこと

割られる数'n'や割る数'kazu'でif文の条件やreturnの位置などを変えてみたものの
エラーメッセージが変わることがありませんでした。

補足情報(FW/ツールのバージョンなど)

サンプルの入出力の結果やテスト入出力の結果は全てクリア済みですがREが出ている状況です。

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

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

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

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

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

1T2R3M4

2021/09/02 07:54

>制御が非void関数の終わりに達しました に対して対応した内容を追記してください。
episteme

2021/09/02 08:27

× 再起 ○ 再帰
ikapy

2021/09/02 08:29

お願いです。「再起」を「再帰」と変更してください。
guest

回答2

0

ベストアンサー

func()関数が再帰関数なんだから、そのまま、returnすれば?

func(n / m, m - 1); --> return func(n / m, m - 1);

もう一つも同様。

投稿2021/09/02 11:15

pepperleaf

総合スコア6383

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

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

ponzu1563

2021/09/02 11:45

ACの評価が出ましたありがとうございます。 指摘された通りに変更を加えました #include <iostream> using namespace std; int func(int n, int m) { if (n == 1) { return 1; } else if (m == 1) { return 0; } if (n % m == 0) { return func(n / m, m - 1); } else { return func(n, m - 1); } } シンプルにまとめることが出来そうですがこれ以上は先生の方に聞いてみます 解決していただき本当にありがとうございました。
guest

0

if (n%m == 0) {
func(n / m, m - 1); } else { func(n, m - 1); }

}

return文がありません

投稿2021/09/02 07:58

y_waiwai

総合スコア87800

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

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

ponzu1563

2021/09/02 08:54

if(n&m==0)の中にreturn文を追加するべきでしょうかそれともif文の外にreturnを追加ですか? 再帰処理への理解が足らず申し訳ありません。
y_waiwai

2021/09/02 09:04

再帰関数と言うより、C言語の文法のはなしです。 値を返す関数なのに、値を返してないのでそのエラーになります この場合にどういう数値を返すべきかってのを考えてみてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問