用c语言的递归和非递归方法求一个数的阶乘问题

数要我们自己输入分别用递归和非递归方法编写
2024-12-02 03:20:13
推荐回答(2个)
回答1:

#include

int rf(int n)
{
return n > 0 ? n * rf(n-1) : 1;
}

int f(int n)
{
int k = 1;
while(n > 0)
k *= n--;
return k;
}

int main()
{
int n;
scanf("%d", &n);
printf("递归:%d\n", rf(n));
printf("非递归:%d\n", f(n));
}

回答2:

/*递归*/int dg(int n){ if( n != 0) return n * dg(n-1)} /*迭代*/int dd(int i){ int num = 1; while(i != 0){ num *= i; i--: } return num;} int main(void){ int i, num1, num2; scanf("%d", &i); num1 = dg(i);//调用递归 nmu2 = dd(i);//调用迭代 printf("%d, %d\n", num1, num2); return 0;}