博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求1+2+3+...+n
阅读量:7258 次
发布时间:2019-06-29

本文共 648 字,大约阅读时间需要 2 分钟。

题目描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
 
 
首先看到这个题,不让用for,while等等。要实现循环,那么就是递归了。
1.需利用逻辑与的短路特性实现递归终止。 
2.当n==0时,(n>0)&&((sum+=Sum_Solution(n-1))>0)只执行前面的判断,为false,然后直接返回,ans为0
3.当n>0时,执行sum+=Sum_Solution(n-1),实现递归计算Sum_Solution(n)。
代码:
int Sum_Solution(int n) {        int ans = n;        ans && (ans +=Sum_Solution(n-1));        return ans;    }
ans && (ans +=Sum_Solution(n-1));//这个语句前一半是用来实现递归终止的,后一半是赋值语句。 还有一个我觉得超厉害的代码,我完全没想到,但是数组的定义用变量,有的编译器应该过不了,但这想法感觉很独特
int Sum_Solution(int n) {        bool a[n][n+1];        return sizeof(a)>>1;    }

用sizeof直接实现了乘法。

 

转载于:https://www.cnblogs.com/Lune-Qiu/p/9126946.html

你可能感兴趣的文章
RMQ问题-ST方法
查看>>
sqlserver 多排序的问题
查看>>
Hibernate之一级缓存和二级缓存
查看>>
vue-cli中的webpack配置
查看>>
React Native系列(6) - 编译安卓私有React-Native代码
查看>>
ThinkPHP的易忽视点小结
查看>>
R语言扩展包dplyr——数据清洗和整理
查看>>
Hurst指数以及MF-DFA
查看>>
Mybatis(三) 映射文件详解
查看>>
长亭技术专栏 安全攻防技术分享
查看>>
RFID Hacking–资源大合集
查看>>
rac_安装软件时报版本号过高问题
查看>>
数据库读写分离
查看>>
怎样当一个好的面试官
查看>>
安卓4.3以上版本已经完美支持BLE(英文版)
查看>>
SpringMVC学习笔记四:数据绑定
查看>>
MySQL系列:innodb源代码分析之线程并发同步机制
查看>>
Python第一弹--------初步了解Python
查看>>
OpenCV——RGB三通道分离
查看>>
【Python】 获取MP3信息replica
查看>>