8 、int f(int x){ return ((x>0)?x*f(x-1):3); }

main(){inti;i=f(f(2));prinf(“%d”,i);}结果(... main(){
int i;
i=f(f(2));
prinf(“%d”,i);}
结果(
展开
 我来答
2040wwwq
推荐于2018-04-04 · 超过16用户采纳过TA的回答
知道答主
回答量:50
采纳率:100%
帮助的人:46.6万
展开全部
递归函数,将2代入:2*1*3=6
再将6代入:6*5*4*3*2*1*3=2160
所以输出为2160

顺便说一句:应该是printf,不是print
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
074vexq430
2011-08-25 · TA获得超过261个赞
知道答主
回答量:503
采纳率:0%
帮助的人:313万
展开全部
这是函数的递归调用
f(x) 当x小于等于零时f(x)=1
f(3)带到函数中,3大于零,所以函数返回值为f(3-1) + f(1) 即f(2) f(1)之和
2大于零,所以f(2)=f(1)+f(-1), 而1仍然大于0,所以f(1) = f(0)+f(-1)
根据条件所以f(1)=2 f(2)=3
f(3)
=f(2)+f(1)
=(f(1) + f(-1)) + f(1)
=((f(0)+f(-1))+f(-1)) + (f(0)+f(-1))
=((1+1)+1)+(1+1)
=5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dszhr035ekq
2011-08-26 · TA获得超过345个赞
知道小有建树答主
回答量:923
采纳率:100%
帮助的人:611万
展开全部
#include<iostream>
using namespace std;
double f1(double x);
double f2(double x);
double f3(double x);
void diaoyong(double x,double(*pf)(double));
int main()
{
double x;
cin>>x;
if(x<=0)
{
diaoyong(x,f1);
}
else if(x> 0 && x<10)
{
diaoyong(x,f2);
}
else if(x >= 10)
{
diaoyong(x,f3);
}
return 0;
}
double f1(double x)
{
return x-1;
}
double f2(double x)
{
return 2*x+3;
}
double f3(double x)
{
return x*x+10;
}
void diaoyong(double x,double(*pf)(double))
{
cout<<(*pf)(x)<<endl;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-25
展开全部
2*1*3=6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式