C语言怎么用递归法求阶乘
#include<stdio.h>longfun(intn){if(n>1)return(n*fun(n-1));return1;/*我的疑问在这里,难道不应该是else...
#include <stdio.h>
long fun(int n)
{
if (n>1)
return (n*fun(n-1));
return 1;/*我的疑问在这里,难道不应该是else return 1吗?根据答案提示这里的1可以换成1L,是什么道理?*/
}
main()
{
printf("10!=%ld\n", fun(10));
} 展开
long fun(int n)
{
if (n>1)
return (n*fun(n-1));
return 1;/*我的疑问在这里,难道不应该是else return 1吗?根据答案提示这里的1可以换成1L,是什么道理?*/
}
main()
{
printf("10!=%ld\n", fun(10));
} 展开
推荐于2017-09-16
展开全部
没错按道理来说是 不满足 条件 (n>1) 时才执行 return 1;
加上 else 程序看起来更清楚。
可是 因为 满足 条件 (n>1) 时执行的是
return (n*fun(n-1));
就已经退出函数了
所以 else 就可以省略了,只有 不满足 条件 (n>1) 时才会执行到 return 1;
加上 else 程序看起来更清楚。
可是 因为 满足 条件 (n>1) 时执行的是
return (n*fun(n-1));
就已经退出函数了
所以 else 就可以省略了,只有 不满足 条件 (n>1) 时才会执行到 return 1;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
思路分析:
n! = n*(n-1)! // n的阶乘可以化为n乘以(n-1) 的阶乘,这就是递归
当n=0或1时,n! = 1 // 这就是递归终止条件
实现算法程序:
double fun(int n) // 递归函数求n的阶乘
{
if(n==0 || n==1) // 递归终止条件
return 1;
else
return n*fun(n-1); // 进行递归运算
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询