如果在不使用if,for,while,switch,三目运算符等等如何实现阶乘的求解? 这里采用与的逻辑结合递归·
#include <stdio.h>
unsigned long factorial(int n)
{
int sum = 1;
n&&(sum = n*factorial(n-1));//递归到0时,利用与的"短路"性质,递归返回sum=1
return sum;
}
int main(int argc ,char **argv[])
{
int i = 0;
for( i = 0 ; i < 15 ; i++) //32位最大十亿位
printf("%d! = %llu\n",i,factorial(i));
return 0;
}
运行效果: