简单c语言函数调用无返回值问题?

编译没问题,但是没有返回值... 编译没问题,但是没有返回值 展开
 我来答
microroom
科技发烧友

2020-04-30 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1568万
展开全部

递归函数myPower的定义有逻辑错误,改成:

double myPower(int a,int b)

{

if(0==b) return 1;

return a*myPower(a,b-1);

}

如果改成这样,会更高效:

double myPower(int a,int b)

{

if(0==b) return 1;

if(1==b) return a;

return myPower(a,b%2)*myPower(a*a,b/2);

}

例子1

#include <stdio.h>

double myPower(int a,int b)

{

if(0==b) return 1;

return a*myPower(a,b-1);

}

int main()

{

int a=2,b;

for(b=0;b<11;b++)

printf("%lf\n",myPower(a,b));

return 0;

}

例子2

#include <stdio.h>

double myPower(int a,int b)

{

if(0==b) return 1;

if(1==b) return a;

return myPower(a,b%2)*myPower(a*a,b/2);

}

int main()

{

int a=3,b;

for(b=0;b<11;b++)

printf("%lf\n",myPower(a,b));

return 0;

}

cdyzxy
2020-04-30 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3656万
展开全部

递归程序设计问题:何时结束递归没有任何处理,因此这样一直调用下去,直到把堆栈耗光。

通常递归函数中要跟据参数条件决定是进一步递归还是结束递归返回。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
野人马
2020-04-30 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:147
采纳率:43%
帮助的人:65.7万
展开全部
因为函数使用了递归,但没有设置退出递归条件;
暂作如下改进,不知是不是你想要的效果?

#include<stdio.h>
double myPower(int a,int b){
static double k=a;
k*=b;
if(b<=1) return k;
myPower(a,b-1);
}
int main(){
int x,n;
scanf("%d%d",&x,&n);
printf("%lf",myPower(x,n));

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2020-04-30 · TA获得超过122个赞
知道答主
回答量:1324
采纳率:16%
帮助的人:81.1万
展开全部
你的retern值不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式