Advertisement

剑指 Offer:发散思维:计算累加和与两数之和及乘积数组构建

阅读量:

一、无条件循环求和方法

解题:循环、递归被限制使用 for while if 等语法

1、循环:通过构造函数生成对象,每当创建一个对象时,构造函数会被调用一次,总共调用N次。

2、递归:构建虚函数或者借助逻辑与运算符&&,可实现递归的终止条件。
3、函数指针的运用
4、借助模板类型进行问题求解

应用逻辑与运算符&&

解题思路:
1.需要借助逻辑与运算符的短路特性来实现递归的终止。
逻辑与运算符具有短路特性,即当第一个操作数为假时,第二个操作数将不再被计算。
2.当n等于0时,表达式(n>0)&&((sum+=Sum_Solution(n-1))>0)中,仅执行前面的判断部分,结果为false后直接返回0;
3.当n大于0时,则执行sum+=Sum_Solution(n-1),从而完成对Sum_Solution(n)的递归计算。

复制代码
 class Solution {

    
 public:
    
     int Sum_Solution(int n) {
    
         int sum = n;
    
         sum && (sum += Sum_Solution(n - 1));
    
         return sum;
    
     }

全部评论 (0)

还没有任何评论哟~