求阶乘或许是对于初学者学编程在学循环时都会写的代码
- 循环
//方法一
int factorial(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result *= i;
}
return result;
}
今天上课时当出到这个同学们不到一分钟就写出了代码思路很清晰;也比较简单;
但对于一个喜欢研究递归,或一个喜欢写递归的人可能不会用上面的方法
一般这样写;
- 递归
/递归方法
int factorial(int n)
{
if (n <= 1)
return 1;
else
return n * factorial(n - 1);
}
分析一下吧!
当输入n时,n>1,每次都走下面的else,return语句将N从函数中提了出来,就形成了语句return n*(n-1)(n-2)(n-3)…(2)*factorial(1);
大家可以试着将遇到的一些迭代循环改成递归,例如求第n个斐波那契数