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

腾讯面试真题(C语言)

一.题目

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

二.题目剖析

首先题目要求不能用乘除,那么(首相+末项)*项数/2就不能用,其次不能用循环,最后不能用条件语句,开关语句和条件运算符,那么想要求一个位置长度的数列和就一定要让操作数“动起来”,想来想去也就只有递归还能试一试了,但递归要有限制条件,不过这个条件不能用条件语句和条件运算符来表现,那么只能想想其他的逻辑运算符,好像也只有用逻辑运算符的短路特性,才能限制递归。

三.代码实现

static int a = 0;
int fun(int n)
{int x = (n) && (fun(n - 1));return a += n;;
}
int main()
{int n;scanf("%d", &n);printf("%d", fun(n));return 0;
}

四.代码剖析

首先定义一个全局变量a(或者在函数内部定义一个静态变量a),这两种做法都行,目的是为了防止函数在被调用完一次后变量a被初始化,然后利用逻辑与运算短路的特性(如果左操作数为0,将不再计算右操作数),这样如果把递归式放到右操作数,这样如果左操作数为0,递归就会结束。

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

相关文章:

  • JavaScript 函数
  • 数据结构 | 查漏补缺之DFS、BFS、二次探测再散列法、完全二叉树、深度计算
  • 用python实现单链表的基础操作
  • [头歌系统数据库实验] 实验3 MySQL的DDL语言
  • 系统运维安全之病毒自检及防护
  • Mabatis处理异常屏蔽SQL返回前端全局异常捕获处理
  • 黑豹程序员-java发邮件,发送内容支持html,带多附件的案例
  • [LeetCode] 15. 三数之和
  • Android Chips(标签)
  • 飞行汽车开发原理(上)
  • 22、pytest多个参数化的组合
  • 【网络奇缘】- 如何自己动手做一个五类|以太网|RJ45|网络电缆
  • 【从零开始学习JVM | 第三篇】类的生命周期(高频面试)
  • 详解前后端交互时PO,DTO,VO模型类的应用场景
  • 力扣295. 数据流的中位数
  • 英语二笔记
  • 【OpenSSH升级】升级后证书认证登录突然失效
  • pytest +uiautomator2+weditor app自动化从零开始
  • 【计算机网络笔记】物理层——信道与信道容量
  • 深度学习火车票识别系统 计算机竞赛
  • C++EasyX之井字棋
  • 12.5_黑马数据结构与算法Java
  • 【PID学习笔记 5 】控制系统的性能指标之一
  • HarmonyOS学习--TypeScript语言学习(三)
  • Matlab 镜像变换(2D)
  • SpringBoot3-快速体验
  • 计数问题(数位DP)
  • SQL Server事务(Transaction)
  • Python语言基础学习大纲(由某大模型生成)
  • nodejs+vue+微信小程序+python+PHP天天网站书城管理系统的设计与实现-计算机毕业设计推荐