首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
定义一个递归函数,接受一个整数参数,并返回该参数的阶乘。前面
[问答题]
定义一个递归函数,接受一个整数参数,并返回该参数的阶乘。前面讲过,3的阶乘写作3!,等于3*2!,依此类推:而0!被定义为1。通用的计算公式是,如果n大于零,则n!=n* (n-1) !。在程序中对该函数进行测试,程序使用循环让用户输入不同的值,程序 将报告这些值的阶乘。
添加笔记
求解答(0)
邀请回答
收藏(0)
分享
纠错
1个回答
添加回答
0
追@~梦~
// 递归的两种方式
// 从下到上,从上到下
// 前者定义的变量会销毁,节省内存空间
// 后者函数在定义的时候回开辟函数栈,用来保存函数的局部变量、参数、上一个栈的指针、返回值等信息,
// 当函数调用结束后会销毁。递归函数会一直递归下去,上层的函数栈一直不会销毁,直到递归结束,全部退出。
#include <iostream>
int Recursive (int n);
int RecursiveBTT (int n, int result);
int main(int argc, char const *argv[])
{
std::cout << Recursive(4) << std::endl;
std::cout << RecursiveBTT(4, 1) << std::endl;
return 0;
}
// 从上到下
int Recursive (int n)
{
if (n <= 1)
{
return 1;
} else
{
return n * Recursive(n-1);
}
}
// 从下到上, 把最高层的结果写到下一个方法中,cpu会复用栈, 消耗的内存空间更小,效率更高
int RecursiveBTT (int n, int result)
{
if (n <= 1)
{
return result;
} else
{
return RecursiveBTT(n-1, n * result);
}
}
发表于 2020-03-11 11:55:48
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++
上传者:
蜡蜡
难度:
1条回答
0收藏
1722浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
Mysql中表student_in...
数据库
SQL
评论
(1)
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
计算机在工作过程中,若突然停电,(...
计算机常识
普及
C++
Pascal
选择题
评论
(1)
来自
NOIP2008初赛普及组
4.该校1997年男女教师的比例为...
资料分析
言语理解与表达
资料分析
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题