今天被公司拉去南航做面试,笔试如题,唉,一想应该就是一个递归搞定撤,可惜出栈益出了。以前没接触过,现在才知道要控制递归层数。两层实现如下,不过数据大了也一样,还有等解进。
/**
* @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之和。
在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用公式表示为: ...
采用冒泡、递归分治及非递归分治三种排序方式,测试过100、1000、10000、100000四个数据规模
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);...
例如,要计算1-9的9位数字的乘积,直观的算法是1*2*3*4*5*6*7*8*9,如果要计算1-10000的乘积,直观的算法就难于实现出,而递归就可以很简单的实现。请看示例: def fact(n):#计算给定数字到一的乘积 if n<=1: ...
var 变量名1=值,变量名2=值,变量名3; 3、变量名命名规范 1、由字母,数字,下划线以及 $ 组成 var user_name; 正确 var user-name; 错误 var $uname; 正确 2、不能以数字开头 var 1name;错误 3、不能使用JS...
基于cs224d分配的递归神经网络的火炬实现3。 假定给定分配给每个句子的树结构。 树中的每个节点都有一个标签。 我们尝试预测标签。 在Terminal.app中,运行th tree.lua训练模型并检查开发集的性能。 打印训练集和...
4的整数次幂的二进制数都为 (4)100、(16)10000、(64)1000000……另外,4的幂次方4^n也可以写为2^(2*n),即也可以写为2的幂次方,当然就满足2的幂次方的条件了,即num & num-1==0。思路:首先用条件num & num-1==0来...
已知: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个数升序排序 舍伍德——快速排序 分支限界装载问题
步骤3——检查不匹配的1级和2级接口。 步骤4——检查区域的错误配置。 步骤5——检查错误配置的子网 步骤6——检查重复的系统ID 3.邻接陷入INIT状态 常见原因:不匹配的接口MTU和认证参数。show ...
注意此题请勿用O n^2 的简单枚举去实现 输入格式 第一行:n 表示接下来要输入n个元素 n不超过10000 第二行:n个元素序列 输出格式 逆序对的个数 输入样例 5 2 3 8 6 1 输出样例 5">设a[0…n 1]是一...
Protobuf生成也没见过一个好用的,谷歌的不知道怎么生成的,目前见到的都是复制很多次的打包,如果嵌套5层 最内层了10000字节,想象一下要拷贝几次,每次拷贝多大的内存. 思路: 解析思路:首先想到的是Protobuf结构可以用...
判断是否能成活4或者是双死4或者是死4活3,如果是机器方的话给予10000分,如果是人方的话给予-10000分; 判断是否已成双活3,如果是机器方的话给予5000分,如果是人方的话给予-5000 分; 判断是否成死3活3,...
可以学到的知识:Qt多线程,多进程,冒泡排序算法,基于递归实现的快速排序算法,Qt的可视化界面设计。 适合人群:适合对于多线程,多进程,Qt界面的开发,排序算法等。提供源码,难度较低,适合初学者进行学习。
◆ Linux用的文件系统:ext2、ext3; ◆ CD-ROM光盘用的文件系统:iso9660。 虽然vfat是指FAT 32系统,但事实上它也兼容FAT 16的文件系统类型。 (2)确定设备的名称 在Linux 中,设备名称通常都存在/dev里。...
###ver2.1 `2014/4/2` ---- ####update: - 文件夹拖拽上传,完美解决(保持原始目录结构) - 解压缩优化;解压中文问题。解压缩整体速度 - 树目录增加快捷键支持(上下、左右展开树目录;复制、粘贴、剪切、删除、...
要求实现两个程序,一个是迭代的,另一个是递归的,以计算伸缩级数的前 n 项之和 a) 迭代方法 b) 递归方法 计算两个程序的复杂度,并根据经验测量每种情况下的时间。 为此,分配 n 个不同的值,例如 n = 10, n = 500...