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);
}
那里错了?怎么改? 展开
按上述公式计算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);
}
那里错了?怎么改? 展开
4个回答
展开全部
#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功能了
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功能了
展开全部
#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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main()
{
int n,x;
cin>>x>>n;
foo(n,x);
cout<<foo(n,x);
cout<<foo这里错了
{
int n,x;
cin>>x>>n;
foo(n,x);
cout<<foo(n,x);
cout<<foo这里错了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fdgdfg
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询