下面是利用尾递归函数求n的阶乘。请填空。 #include<stdio.h> int factTR(int n, int a) { if (n == 0) return ; return factTR(n - 1, );/*尾递归*/ } int main() { int n; scanf("%d", &n); printf("%d\n", factTR(n, 1)); return 0; }
时间: 2024-03-24 20:39:50 浏览: 182
下面是利用尾递归函数求n的阶乘的代码,需要填空的地方已经标注出来。
```
#include<stdio.h>
int factTR(int n, int a) {
if (n == 0)
return a;
return factTR(n - 1, n * a);/*尾递归*/
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", factTR(n, 1));
return 0;
}
```
该函数将n和a作为参数传入,a记录当前的阶乘结果。在递归过程中,n不断减1,a乘以n,直到n等于0时,返回a作为阶乘的结果。这里使用尾递归可以避免栈溢出等问题,提高了代码的效率。
阅读全文