腾讯面试真题(C语言)

一.题目

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

二.题目剖析

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

三.代码实现

cpp 复制代码
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,递归就会结束。

相关推荐
码出极致11 分钟前
支付平台资金强一致实践:基于 Seata TCC+DB 模式的余额扣减与渠道支付落地案例
后端·面试
人机与认知实验室30 分钟前
人机环境空战矩阵
人工智能·线性代数·算法·机器学习·矩阵
walking95736 分钟前
JavaScript 神技巧!从 “堆代码” 到 “写优雅代码”,前端人必看
前端·面试
百度Geek说38 分钟前
5个技巧让文心快码成为你的后端开发搭子
后端·算法
walking95742 分钟前
前端 er 收藏!高性价比 JS 工具库,轻量又强大
前端·面试
上海迪士尼3542 分钟前
除自身以外数组的乘积是什么意思
数据结构·算法
数据智能老司机1 小时前
Python 实战遗传算法——遗传算法导论
python·算法·机器学习
咩?1 小时前
支持向量机(第二十九节课内容总结)
算法·机器学习·支持向量机
walking9571 小时前
效率党必藏! JavaScript 自动化脚本,覆盖文件管理、天气查询、通知提醒(含详细 demo)
前端·面试
EulerBlind1 小时前
【机器学习】从KNN算法到图像风格迁移:原理与实践
人工智能·算法·机器学习