<< 過去の記事 未来の記事 >>

その後

今のコード

i;main(r){r*=i--?:scanf("%d",&i);i?main(r):printf("%d",r);}

【追記】06:10

i;main(r){i||scanf("%d",&i);i?main(r*i--):printf("%d",r);}

わずかに良くなる。

【追記】06:12

i;main(r){scanf("%d",&i);i?main(r*i--):printf("%d",r);}

【追記】06:35 同着

i;main(r){for(i=getchar()-48;r*=i--?:printf("%d",r););}

i;main(r){for(scanf("%d",&i);r*=i--?:printf("%d",r););}

元のコード

#include <stdio.h>

int fact(int n){
    if(n == 0) return 1;
    return n * fact(n-1);
}

int main(){
    int n = 0;
    scanf("%d", &n);
    printf("%d", fact(n));
    return 0;
}

テスト環境

$ for i in `seq 0 12`; sh -c "echo $i | ./a.out "

<< 過去の記事 未来の記事 >>