面试题之发散思维能力:如何用非常规方法求1+2+···+n

本文介绍了四种非常规方法解决面试题中的求1到n的和问题,包括利用构造函数、虚函数、函数指针以及模板类型。详细展示了每种方法的实现思路和操作步骤。
摘要由CSDN通过智能技术生成
今天在《剑指offer》里看到了下面这样一个简单且有趣的题,考察程序员的发散思维能力,前提是你对C++相关知识点熟悉,否则是想不出来方案的,分享给大家。
 
题目:求1+2+···+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
 
点评:这个问题本身没有太多的实际意义,因为在软件开发中不可能有这么苛刻的限制。但不少面试官认为这是一道不错的能够考查应聘者发散思维能力的题目,而发散思维能够反映出应聘者知识面的宽度,以及对编程相关技术理解的深度。
 
分析:通常求1+2+ ··· +n有三种常规思路(1)循环;(2)递归(需要用if语句或者条件判断语句来判断是继续递归下去还是终止递归);(3)使用公式n*(n+1)/2。因为题目限制,这三种常规方案都不可行。那么如何用非常规方案求解该问题呢?下面提供两种解题思路,对应四种解决方案,本质上还是采用循环或递归的思路,只是写法改变了。
 
解题思路一:循环角度
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值