概要
warning: control reaches end of non-void function [-Wreturn-type]
が出た。
問題のコード
int anc(int cnt, int n){ if(n == 1) return cnt+1; anc(cnt+1, a[n-1]); } int main() { int n; cin >> n; for(int i=1; i<n; i++) cin >> a[i]; cout << anc(0, a[n-1]) << endl; }
解決方法
タイトルのwarningの内容について調べてみると再帰関数の最後にreturn
がないためにwarning が出る。
warningが出力されないように問題のコードを修正すると
int anc(int cnt, int n){ if(n == 1) return cnt+1; return anc(cnt+1, a[n-1]); // 修正箇所 } int main() { int n; cin >> n; for(int i=1; i<n; i++) cin >> a[i]; cout << anc(0, a[n-1]) << endl; }
になる。