• ベストアンサー

一行で再帰関数と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; }

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

return (cnt==0)?0:(++num, num[-1]+Sum(num, cnt-1));

noname#16581
質問者

お礼

すごいです! ありがとうございました。

その他の回答 (1)

回答No.2

return *num+Sum(&(num[1]),cnt-1); こんな感じでしょうか? もしくはif文も一行に収めたければ、 return (cnt ? (*num+Sum(&(num[1]),cnt-1)) : 0); これって授業か何かの宿題ですか?

noname#16581
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう