- ベストアンサー
一行で再帰関数と3項演算子で合計値を出したいです。
以下のソースで、3項演算子を使い、int tmp;は使わずに1行でreturnすることはできますか? 教えてください。 よろしくお願いします。 #include<stdio.h> int Sum(int *num,int cnt) { if(cnt==0){return 0;} int tmp=*num; return tmp+Sum(++num,cnt-1); } int main() { int List[5]; List[0]=1; List[1]=10; List[2]=100; List[3]=1000; List[4]=8889; printf("%d",Sum(List,sizeof(List)/sizeof(int))); getchar(); return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
return (cnt==0)?0:(++num, num[-1]+Sum(num, cnt-1));
その他の回答 (1)
- shinya_ohtani
- ベストアンサー率36% (9/25)
回答No.2
return *num+Sum(&(num[1]),cnt-1); こんな感じでしょうか? もしくはif文も一行に収めたければ、 return (cnt ? (*num+Sum(&(num[1]),cnt-1)) : 0); これって授業か何かの宿題ですか?
質問者
お礼
ありがとうございました。
お礼
すごいです! ありがとうございました。