`
yuyanshan
  • 浏览: 48199 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

求1+2+3+4+。。。+9999+10000用递归实现

阅读更多
今天被公司拉去南航做面试,笔试如题,唉,一想应该就是一个递归搞定撤,可惜出栈益出了。以前没接触过,现在才知道要控制递归层数。两层实现如下,不过数据大了也一样,还有等解进。
/**
 * @author Fish Yu   
 * @date 2009-11-18    
 * @version 1.0
 *   
 */
public class Recursion {

	/**
	 * @param args   
	 */
	public static void main(String[] args) {
		System.out.println(Recursion.sum(10000));

	}
	
	public static int sum(int num){
		int t = num/1000;
		int last = num%1000;
		return sumStepShousand(t,last,1000);
	}

	public static int sumStepShousand(int baseTime,int remainder,int baseNum) {
		if (baseTime >= 0 ) {
			if(remainder != 0) return sum2(baseTime,remainder,baseNum) + sumStepShousand(baseTime - 1,baseNum,baseNum);
			else return sum2(baseTime,0,baseNum) + sumStepShousand(baseTime - 1,baseNum,baseNum); // 调用递归方法
		} else return 0;
	}
	public static int sum2(int baseTime,int remainder,int baseNum) {
		if (remainder > 0) {
			return baseNum * baseTime + remainder + sum2(baseTime,remainder -1,baseNum); // 调用递归方法
		} else {
			return 0;
		}
	}
}
分享到:
评论

相关推荐

    用while循环语句来计算1+1/2+2/3+3/4+...+99/100之和

    编一个程序,用while循环语句来计算1+1/2+2/3+3/4+...+99/100之和。

    Labview实现递归:斐波那契数列

    在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用公式表示为: ...

    c++冒泡法、递归及非递归分治排序

    采用冒泡、递归分治及非递归分治三种排序方式,测试过100、1000、10000、100000四个数据规模

    Java算法总结2010-09-20

    8.编写程序以递归的方式实现1+2+3+...+n(n=200)的计算.*/ 9.给定一个数,并由键盘输入若干个数,找出与预先给定的数最接近的数, 并指出它是由键盘输入的第几个数。 10.使用Java,long.Math类,生成10个0到99之间的...

    排列问题再讨论

    void RecurInsertionSort(int p, int q)//递归插入,跟递归求阶乘的思想一样,前n个排好序的数组,是建立在前n-1个排好序的数组的基础上插入出来的 { if(q-p+1 > 1) { RecurInsertionSort(p, q-1); Insert(p,q);...

    深入理解python函数递归和生成器

    例如,要计算1-9的9位数字的乘积,直观的算法是1*2*3*4*5*6*7*8*9,如果要计算1-10000的乘积,直观的算法就难于实现出,而递归就可以很简单的实现。请看示例: def fact(n):#计算给定数字到一的乘积 if n<=1: ...

    javascript入门笔记

    var 变量名1=值,变量名2=值,变量名3; 3、变量名命名规范 1、由字母,数字,下划线以及 $ 组成 var user_name; 正确 var user-name; 错误 var $uname; 正确 2、不能以数字开头 var 1name;错误 3、不能使用JS...

    recursive_neural_network:递归神经网络的火炬实现

    基于cs224d分配的递归神经网络的火炬实现3。 假定给定分配给每个句子的树结构。 树中的每个节点都有一个标签。 我们尝试预测标签。 在Terminal.app中,运行th tree.lua训练模型并检查开发集的性能。 打印训练集和...

    如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    4的整数次幂的二进制数都为 (4)100、(16)10000、(64)1000000……另外,4的幂次方4^n也可以写为2^(2*n),即也可以写为2的幂次方,当然就满足2的幂次方的条件了,即num & num-1==0。思路:首先用条件num & num-1==0来...

    2025NOIP普及组.rar

    已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。现给出一个整数K(1),要求计算出一个最小的n,使得Sn>K [问题分析]: 这道题目非常简单,题目的意思已经把该题的算法描述得再...

    算法作业源码实现加算法分析报告

    2_2矩阵乘法 用递归法计算从n个正整数中选择k个数的不同组合数 分治法n! 实现arr[100]对10000个数升序排序 舍伍德——快速排序 分支限界装载问题

    CISCO路由之排除路由故障

     步骤3——检查不匹配的1级和2级接口。  步骤4——检查区域的错误配置。  步骤5——检查错误配置的子网  步骤6——检查重复的系统ID  3.邻接陷入INIT状态  常见原因:不匹配的接口MTU和认证参数。show ...

    11087 统计逆序对

    注意此题请勿用O n^2 的简单枚举去实现 输入格式 第一行:n 表示接下来要输入n个元素 n不超过10000 第二行:n个元素序列 输出格式 逆序对的个数 输入样例 5 2 3 8 6 1 输出样例 5">设a[0…n 1]是一...

    易语言-易语言 纯源码实现 非递归解析Protobuf全部节点并自动生成组包代码

    Protobuf生成也没见过一个好用的,谷歌的不知道怎么生成的,目前见到的都是复制很多次的打包,如果嵌套5层 最内层了10000字节,想象一下要拷贝几次,每次拷贝多大的内存. 思路: 解析思路:首先想到的是Protobuf结构可以用...

    很好的五子棋 MFC

    判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分; 判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分; 判断是否成死3活3,...

    Qt多线程可视化多线程排序算法演示:冒泡和快排

    可以学到的知识:Qt多线程,多进程,冒泡排序算法,基于递归实现的快速排序算法,Qt的可视化界面设计。 适合人群:适合对于多线程,多进程,Qt界面的开发,排序算法等。提供源码,难度较低,适合初学者进行学习。

    入门学习Linux常用必会60个命令实例详解doc/txt

    ◆ Linux用的文件系统:ext2、ext3; ◆ CD-ROM光盘用的文件系统:iso9660。 虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。 (2)确定设备的名称 在Linux 中,设备名称通常都存在/dev里。...

    KODExplorer 芒果云-资源管理器

    ###ver2.1 `2014/4/2` ---- ####update: - 文件夹拖拽上传,完美解决(保持原始目录结构) - 解压缩优化;解压中文问题。解压缩整体速度 - 树目录增加快捷键支持(上下、左右展开树目录;复制、粘贴、剪切、删除、...

    Metodologia_Ejercicios:编程方法和算法应用练习

    要求实现两个程序,一个是迭代的,另一个是递归的,以计算伸缩级数的前 n 项之和 a) 迭代方法 b) 递归方法 计算两个程序的复杂度,并根据经验测量每种情况下的时间。 为此,分配 n 个不同的值,例如 n = 10, n = 500...

Global site tag (gtag.js) - Google Analytics