1.递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
//递归
#include<stdio.h>
int Fac(int n)
{
if (n <= 1)
return 1;
else
return n * Fac(n - 1);
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fac(n);
printf("%d\n", ret);
return 0;
}
//非递归
#include<stdio.h>
int Fac(int n)
{
int i = 0;
int sum = 1;
for (i = 1; i <= n; i++)
{
sum *= i;
}
return sum;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fac(n);
printf("%d\n", ret);
return 0;
}
2.递归实现n的k次方
#include<stdio.h>
int Fn(int n,int k)
{
if (k == 1)
return n;
else
return n * Fn(n, k - 1);
}
int main()
{
int n = 0;
int k = 0;
scanf("%d %d", &n,&k);
int ret = Fn(n,k);
printf("%d\n", ret);
return 0;
}