1+2+...+nを求めて、求めて乗除法、for、while、if、elseを使うことができません...
487 ワード
タイトル:
1+2+...+nを求めて、
乗算除算法、for、while、if、else、switch、caseなどのキーワードおよび条件判断文(A?B:C)は使用できないことが要求される.
ネット上でマクロ定義の書き方がよく理解されていないのを見て、もう一つの再帰的な書き方があって、とても巧みで、勉強しました.
コードは以下の通りです
1+2+...+nを求めて、
乗算除算法、for、while、if、else、switch、caseなどのキーワードおよび条件判断文(A?B:C)は使用できないことが要求される.
ネット上でマクロ定義の書き方がよく理解されていないのを見て、もう一つの再帰的な書き方があって、とても巧みで、勉強しました.
コードは以下の通りです
#include <stdio.h>
#include <stdlib.h>
int sum(int n)
{
int tmp = 0;
(n)&&(tmp = sum(n-1));// n=0 , (tmp = sum(n-1))
return n+tmp;
}
int main(void)
{
printf("1+2+...+100 = %d
",sum(100));
return 0;
}
そのマクロ定義については、後で貼り付けます.