`
yuyanshan
  • 浏览: 49295 次
  • 性别: 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"为例,展示`while`循环的基本用法和逻辑。 首先,我们要明确这个序列的规律:每一项都是连续整数的分子除以它们的分母,即第n...

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

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

    用递归函数的方式求π

    \[ \pi = 4\sum_{n=1}^{\infty} \left(\frac{1}{4n-3} - \frac{1}{4n-1}\right) \] 这里的关键在于递归函数`f`的设计,它接受三个参数:当前迭代次数`n`、两个分数的分子`a`和`b`。函数首先计算出当前项的值,然后...

    Pow(x, n)(递归+奇偶考虑)1

    3. 当 `x = 2.00000` 且 `n = -2` 时,计算结果是 `0.25000`,因为 `2^-2 = 1/(2^2) = 1/4 = 0.25`。 给定的解决方案使用了递归策略,并根据指数的奇偶性进行优化。我们分析一下提供的代码: ```cpp class ...

    用java实现10000的阶乘(2种方法)

    以下是用Java实现的递归方法: ```java public static BigInteger factorialRecursion(int n) { if (n == 0 || n == 1) { return BigInteger.ONE; } else { return BigInteger.valueOf(n).multiply...

    Python理解递归的方法总结

    3. **非递归实现**:对于某些递归算法,可以使用迭代等非递归的方式重新实现,以减少空间开销。 **示例代码**: ```python def fibonacci(n): if n <= 1: return (n, 0) else: (a, b) = fibonacci(n - 1) ...

    Python实现的递归神经网络简单示例.pdf

    在本示例中,我们将探讨如何使用Python实现一个简单的递归神经网络(RNN)。递归神经网络是一种具有循环连接的神经网络模型,允许信息在时间步之间流动,因此特别适用于处理序列数据,如自然语言。 首先,我们导入...

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

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

    用递归法计算从n个正整数中选择k个数的不同组合数

    = 5 × 4 × 3 × 2 × 1 = 120。这个公式告诉我们如何直接计算组合数,但当我们使用递归法时,我们并不直接使用这个公式,而是通过递归关系来实现。 递归法的思路是将问题分解为更小的子问题,直到达到基本情况,...

    实验三.docx.docx

    本部分要求计算已知的数学函数fyff=+(1) 当 f(n)=n+10log(n2+5)时,求 y 的值,以及当 f(n)=1×2+2×3+3×4+...+n×(n+1)时,求 y 的值。这两个问题可以使用数学函数和递归函数来解决。 知识点: * 数学函数:f(n)...

    python中尾递归用法实例详解_.docx

    #### 四、Python中的尾递归实现 尽管Python本身并不支持尾递归优化,但我们可以采用一些方法来模拟尾递归的行为。下面将通过两个例子来说明如何在Python中实现尾递归。 ##### 4.1 实例1:阶乘计算 阶乘函数是一个...

    批处理bat递归计算N!的实现代码

    = 5 * 4 * 3 * 2 * 1 = 120。 在批处理中实现递归计算通常不是一件容易的事,因为批处理不支持内置的递归函数。然而,我们可以利用循环和变量来模拟递归过程。给出的核心代码通过迭代方式实现了阶乘的计算,并使用...

    编程实现希尔、快速、堆、归并排序算法,随机产生10000个随机数存入磁盘文件,读取,并将不同排序方法的结果存入文件中(含报告)

    本项目重点实现了四种常见的排序算法:希尔排序、快速排序、堆排序以及归并排序,并将这些算法应用于随机生成的10000个整数上。以下是这四种排序算法的详细解释: 1. **希尔排序**: 希尔排序,又称插入排序的改进...

    实验5Matlab程序设计2.pdf

    3.递归调用实现函数 我们可以使用 Matlab 来定义一个递归函数来计算一个数列的和。我们定义一个函数 `sy5_3`: ```Matlab function[y]=sy5_3(n,m) y=0; for i=1:n; a=i.^m; y=y+a; end ``` 我们可以使用这个函数...

    递归特训(共11道题)1204.pdf

    GCD可通过递归实现,若`b`为0,则`a`为GCD;否则,继续求`b`和`a`除以`b`的余数的GCD。LCM可以通过`a * b / GCD(a, b)`得到。 6. **全排列**:生成`n`个数的所有全排列。这是一个典型的回溯问题,可以用递归生成...

    Mysql树形递归查询的实现方法

    在MySQL中实现树形递归查询,由于MySQL本身并不直接支持类似于Oracle的`START WITH ... CONNECT BY`语法,因此需要采用其他策略。通常,我们可以利用自定义函数或递归查询的方式来处理树形结构数据。以下将详细介绍...

    算10000以内数阶乘的C语言程序

    标题中的“算10000以内数阶乘的C语言程序”指的是使用C语言编写一个计算1到10000之间任意整数阶乘的程序。在数学中,阶乘是一个正整数n与小于等于它的所有正整数的乘积,表示为n!。例如,5的阶乘(5!)是5 x 4 x 3 x...

    给定一个十进制正整数N,程序输出从1到N的所有整数中,“1”出现的个数。DMU

    char str[N+1]; sprintf(str, "%d", N); ``` 2. **字符串遍历**: 将数字转换为字符串后,我们需要遍历字符串中的每个字符。在C语言中,可以使用for循环或while循环来实现,例如: ```c for (int i = 0; str...

    Python递归函数定义与用法示例

    ===> 5 * (4 * (3 * (2 * fact(1)))) ===> 5 * (4 * (3 * (2 * 1))) ===> 5 * (4 * (3 * 2)) ===> 5 * (4 * 6) ===> 5 * 24 ===> 120 ``` 递归函数的主要优点在于其定义简洁且逻辑清晰,尤其是对于那些可以用数学...

    汇编语言实现完全数 报告和源码(课程设计任务书)

    - 主程序算法:使用循环结构,从2开始遍历至10000,对于每一个数字i,再次使用循环结构从2开始遍历至i,判断是否存在整除关系。如果存在,则累加约数和;最后比较约数和与原数是否相等,相等则输出。 - 子程序算法...

Global site tag (gtag.js) - Google Analytics