プロが教える店舗&オフィスのセキュリティ対策術

以下のソースで、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;
}

A 回答 (2件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/09 02:00

return *num+Sum(&(num[1]),cnt-1);


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

これって授業か何かの宿題ですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/09 02:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!