c++递归计算x的n次方

题目要求:当x^n=1(ifn=0)当n是偶数的时候=(x*x)^n/2当n是奇数的时候=x*(x*x)^(n-1)/2按上述公式计算x^n(任意给定n和x)用递归求解:... 题目要求:当x^n=1( if n=0)当n是偶数的时候=(x*x)^n/2 当n是奇数的时候=x*(x*x)^(n-1)/2
按上述公式计算x^n(任意给定n和x)
用递归求解:我写的代码如下那里错了?怎么改?我用的是vc6.0的编译器
#include<iostream.h>

int foo(int n,int x)
{
if(n=1)
{
return 1;
}
else
{
if(n%2==0)
return foo(n/2,x*x);
else(n%2==1);
return x*foo(n/2,x*x);
}
}

void main()
{
int n,x;
cin>>x>>n;
foo(n,x);
cout<<foo(n,x);
}
那里错了?怎么改?
展开
 我来答
御风__弄影
2009-03-11 · TA获得超过659个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:252万
展开全部
#include<iostream.h>

double foo(int n,double x)
{
if(1==n)
{
return x;
}
else
{
if(n%2==0)
return foo(n/2,x*x);
else
return x*foo((n-1)/2,x*x);
}
}

void main()
{
int n;
double x;
cin>>x>>n;
cout<<foo(n,x)<<endl;
}

改了一些错后可以实现求x^n功能了
爽口还明快灬彩旗L
2009-03-11 · TA获得超过322个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:272万
展开全部
#include<iostream>
using namespace std;

int foo(int x,int n)
{
if (n==0)//这里,应该是n == 0,已改正
{
return 1;
}
else
{
if(n%2==0)
return foo(x*x, n/2);
else if(n%2==1) //这里,应该加个if ,而且不该有个“;”号!已改正
return x*foo(x*x,n/2);
}
}

void main()
{
int n,x;
cin>>x>>n;
//foo(n,x); //这句多余,已注释掉
cout<<foo(x,n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东岳青山顶峰8
2009-03-11
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
void main()
{
int n,x;
cin>>x>>n;
foo(n,x);
cout<<foo(n,x);
cout<<foo这里错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友306a6bd9d
2009-03-11 · TA获得超过200个赞
知道答主
回答量:237
采纳率:0%
帮助的人:104万
展开全部
fdgdfg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式