当前位置: 首页 > news >正文

PTA-快速幂

要求实现一个递归函数,高效求ab(1≤a,b≤62,ab<263)。

函数接口定义:


long long int pow(int a, int b);

其中a 、b 是用户传入的参数。

裁判测试程序样例:


#include<iostream> 
using namespace std; 
long long int pow(int a, int b); //求a^b //输入整数a,b,求 a^b,处理到文件尾 
int main() { 
int a,b; 
while(cin>>a>>b) { 
cout<<pow(a,b)<<endl; 
} 
return 0; 
}

输入样例:

2 3
2 10

输出样例:

8
1024

分析:

  1. 首先判断指数b是否为0,如果是,则返回1,因为任何数的0次方都是1。
  2. 如果指数b为奇数,则递归计算a的b-1次方,然后将结果乘以a。这是因为a的奇数次方可以表示为a乘以a的(b-1)次方。
  3. 如果指数b为偶数,则递归计算a的b/2次方,然后将结果乘以自身。这是因为a的偶数次方可以表示为(a的b/2次方)的平方。
  4. 最终返回计算得到的结果。

C语言:

#include<iostream>
using namespace std;long long int pow(int a, int b) // 递归方式求a^b
{if (b == 0)return 1;if (b % 2 == 1) // 当b为奇数return a * pow(a, b - 1);else { // 当b为偶数long long int c = pow(a, b / 2);return c * c;}
}

总结:

 

这段代码利用了递归的思想,将一个复杂的问题(a的b次方)分解为更小的子问题(a的(b-1)次方或a的b/2次方)。然后逐步递归求解子问题,最终得到原问题的解。此外,代码中还利用了递归终止条件(当b为0时),确保递归过程能够终止并返回结果。

http://www.lryc.cn/news/240102.html

相关文章:

  • 【深度学习】Transformer简介
  • Linux 是否被过誉了?
  • 【SpringBoot篇】Spring_Task定时任务框架
  • 智能导视电子指路牌是什么?
  • Android 13.0 无源码app修改它的icon图标
  • 【钉钉】通过链接方式跳转到应用机器人聊天窗口
  • Linux平台下使用.NET Core访问Access数据库
  • SpringCloud - 新版淘汰 Ribbon,在 OpenFeign 中整合 LoadBalancer 负载均衡
  • [MySQL-基础]SQL语句
  • CentOS 7实现类似于Kali Linux中的自动补全功能
  • skywalking中gateway的拓扑图没有出现
  • 【前端学java】java中的日期操作(12)
  • 用eclipse搭建简单的JavaWeb环境
  • 【精选】改进的YOLOv5:红外遥感图像微型目标的高效识别系统
  • HarmonyOS ArkTS语言,运行Hello World(一)
  • IDEA中注释快捷键及模板
  • centos7系统下postgresql15离线安装,卸载
  • C#线程 ConcurrentQueue安全队列介绍
  • CURL踩坑记录
  • Python 自动化(十八)admin后台管理
  • Navicat 技术指引 | 适用于 GaussDB 的自动运行功能
  • MySQL 的执行原理(四)
  • PHP 正则式 全能匹配URL(UBB)
  • hadoop shell操作 hdfs处理文件命令 hdfs上传命令 hadoop fs -put命令hadoop fs相关命令 hadoop(十三)
  • redis-cluster集群
  • Hfish安全蜜罐部署
  • Apache POI(Java)
  • P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)
  • PS右边的图层窗口没有显示出来?
  • Sealos 云操作系统私有化部署教程