【剑指offer-Java版】46求 1 + 2 + 3 + ... + n
求 1 + 2 + … + n 但是不能使用判断,循环,分支,条件判断语句以及乘除运算
利用反射实现递归:目标就是构建一个递归出口
public class _Q46<T> {public int terminator(int n){return 0;}public int sum(int n) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{List<Boolean> list = new ArrayList<>();list.add(false);list.add(true);// reflecting all the public member methods of the class or interface represented by this Class object// The elements in the array returned are not sorted and are not in any particular order.Method methods[] = this.getClass().getMethods();int index = list.indexOf(n == 0); // 仅当n==0的时候执行terminator()方法return n + (int)methods[index].invoke(this, (--n));}}
测试代码:
public class _Q46Test extends TestCase {_Q46<?> sum = new _Q46();public void test() throws IllegalAccessException, IllegalArgumentException, InvocationTargetException{System.out.println(sum.sum(100));}}
【剑指offer-Java版】46求 1 + 2 + 3 + ... + n相关推荐
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)
前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...
- 剑指offer java版(三)
二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...
- 剑指offer java版(一)
二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...
- 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中
面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...
- 剑指Offer第二版Java代码实现
剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...
- 剑指offer——面试题46:求1+2+...+n
剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...
- 剑指offer第二版答案详细版(带详细解题思路)
1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...
- 剑指offer最新版_剑指Offer——Java版本(持续更新)
0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...
- 剑指offer第二版(leetcode)Java题解(不断更新)
1 数组中的重复数字 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一 ...
最新文章
- Python 处理server返回gzip内容
- 使用WeUI+JS 的label包含input触发两次的问题
- python tkinter教程 博客园_python tkinter教程-事件绑定
- jakarta ee_关于Jakarta EE软件包名称更改的思考
- 解决:Chrome 插件安装时提示 程序包无效:“CRX_HEADER_INVALID“
- 深度学习语义分割理论与实战指南.pdf
- 推荐系统和搜索引擎的关系
- 递归下降实现LL(1)文法分析C语言与Python实现
- 别人连不上_手机能连上wifi,笔记本电脑确连不上,显示无internet,安全,该怎么办?...
- xxl-job架构源码解析
- CDA的考试体系与人才能力模型
- 常用编程语言介绍及各语言特点
- 五、eclipse如何创建一个ftl(FreeMarker)的文件和设置ftl文件的显示风格(ftl文件高亮显示)
- JS match() 方法 使用
- 计算机桌面ie图标无法删除,解决桌面IE图标或者我的电脑无法删除
- 免费开放可转盲文字库 阿里健康大药房呼吁关注视障群体用药安全
- 如何使用网线连接树莓派和电脑
- Spring三大核心思想
- 万维网支持用户资源上行至服务器,万维网服务器
- Element表格出现闪动问题