求a的n次方,用分治法

heidaizx 2008-09-26 11:42:45
不知道这样有没有效率上的提高
...全文
1029 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacknes009 2008-09-28
  • 打赏
  • 举报
回复
递归,
heidaizx 2008-09-27
  • 打赏
  • 举报
回复
up一下
heidaizx 2008-09-27
  • 打赏
  • 举报
回复
是这样吗

#include<iostream>
using namespace std;
int a=2;
int f(int n)
{
if(n==1) return a;
else if(n%2==0) return f(n/2)*f(n/2);
else return a*f(n/2)*f(n/2);
}
int main()
{
cout<<f(9);
system("pause");
return 0;
}

谦仪 2008-09-27
  • 打赏
  • 举报
回复
如果数据量大,数值大,采样分治法是很好。

刚刚学到这个,知道可以提高精度和速度。
zhuwanglove 2008-09-27
  • 打赏
  • 举报
回复
学习。
liujianfeng858 2008-09-27
  • 打赏
  • 举报
回复
学习了,顶一下
帅得不敢出门 2008-09-26
  • 打赏
  • 举报
回复
自己做个测试就清楚了.
heidaizx 2008-09-26
  • 打赏
  • 举报
回复
具体应该怎么实现
ssk148150105 2008-09-26
  • 打赏
  • 举报
回复
变麻烦了 有提高
zzhzhua 2008-09-26
  • 打赏
  • 举报
回复
个人认为看具体情况了,这就应该是以牺牲空间换取时间的方法了。
oo 2008-09-26
  • 打赏
  • 举报
回复
先求a的2次方,4次方,8次方,。。。。,看n多大,最大求到比n小的一个2的m次方
然后根据n的二进制,把求出的相应次方乘起来。

比如求a的9次方
先求出a^2,a^4,a^8
然后a*a^8就得到a^9
heidaizx 2008-09-26
  • 打赏
  • 举报
回复
用分治法怎么实现。
user_csc 2008-09-26
  • 打赏
  • 举报
回复
void main()
{
int a ,n = 2;
int m = 1;
cin>> a ;
cin>> n;
for(int i = 1 ;i <= n ; i ++)
m *= a;
cout<< m;
}

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧