news 2026/5/11 13:54:58

递归 专题(判断一个数 是否 2的N次方,位运算 实现 加法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
递归 专题(判断一个数 是否 2的N次方,位运算 实现 加法)

文章目录

        • 1、用一个表达式,判断一个数X,是否是2的N次方(2,4,8, …),不可用循环语句(递归 实现)
        • 2、位运算,实现两个整数的 加法运算(递归实现)


递归算法 是天生的低效率。
如果用循环语句做的改进算法实现起来要比递归复杂得多的话:大幅度增加了复杂度,而在执行效率上得不到满意的回报。建议还是优先选择递归来解决问题。


1、用一个表达式,判断一个数X,是否是2的N次方(2,4,8, …),不可用循环语句(递归 实现)

(宝典第4版P55)

#include<iostream>using namespace std;intlog2(intvalue)//递归 判断一个数是否2的多少次方{if(value==1)return0;elsereturn1+log2(value>>1);//递归 判断}intmain(){intnum;cout<<"请输入一个数, 判断是否是2的N次方:"<<endl;scanf("%d",&num);if(num&(num-1))printf("%d不是2的N次方!\n",num);elseprintf("%d是2的 %d次方!\n",num,log2(num));}

2、位运算,实现两个整数的 加法运算(递归实现)

(程序员面试宝典第4版P56)

#include<stdio.h>intAdd(inta,intb)//{if(b==0)returna;// 没有进位的时候完成运算intsum,carry;sum=a^b;// 完成 第一步:没有进位的 加法运算carry=(a&b)<<1;// 完成 第二步:进位、并且 左移运算returnAdd(sum,carry);// 进行递归,相加}intmain(){printf("%d\n",Add(13,12));// 结果是 25}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 13:49:06

ReportPortal与JIRA集成:如何无缝连接测试与开发工作流

ReportPortal与JIRA集成&#xff1a;如何无缝连接测试与开发工作流 【免费下载链接】reportportal Main Repository. ReportPortal starts here - see readme below. 项目地址: https://gitcode.com/gh_mirrors/re/reportportal 在现代软件开发中&#xff0c;测试管理与…

作者头像 李华
网站建设 2026/5/11 13:45:33

暗黑2存档编辑器:数据遍历策略与性能优化实践

暗黑2存档编辑器&#xff1a;数据遍历策略与性能优化实践 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 文档概述 本文档面向游戏存档编辑器开发者、前端工程师以及对游戏数据解析感兴趣的技术人员&#xff0c;深入探讨暗黑2存…

作者头像 李华
网站建设 2026/5/11 13:43:15

CANN/asc-devkit ScalarCountLeadingZero API

ScalarCountLeadingZero 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https:/…

作者头像 李华