#include<stdio.h>
int factorial(unsigned int i);
int main(void)
{
printf("Fact: %d", factorial(5));
}
int factorial(unsigned int i)
{
int j;
int TotalFact;
/* Termination Condition */
if(i <= 1)
{
return 1;
}
/* Body, Recursive Expansion */
for(j=1; j<i; j++)
{
TotalFact=i * factorial(j);
}
return TotalFact;
}
我试图用递归方法做阶乘函数,我已经寻找了许多解决方案,然后我试图头脑 Storm 另一个代码,这是我现在张贴,所以它是正确的递归方法??我不想做i * 阶乘(i - 1)
1条答案
按热度按时间jq6vz3qz1#
递归中不需要
for
循环,只需返回i * factorial(i - 1)
即可。下面是代码,做了一些小改动。正如@Fe023所指出的,这也可以用三元运算符来解决。