1+2+...+nを求めて、求めて乗除法、for、while、if、elseを使うことができません...

487 ワード

タイトル:
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; }
そのマクロ定義については、後で貼り付けます.