`

题目---递归应用

阅读更多
//关于这个知识点不懂得话,复习数据结构与算法中的 斐波那契---递归
有的递归值是因为分支太多,而需要同样的规则来遍历,最后抛弃前面的东西,只要最终的结果,比如倒油问题和字母全排列。。。。有的递归是没有分支的,他是为了累加全面所做的事情所以可以return;所以return的含义是 我计算本层的结果 然后 通知下一次计算结果,最后返回所有我这层及其下层的结果给上层。。。。

题目1:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,球它在第10次落地时,共经过多少米?第10次反弹多高?




public static int Sum(int curHigh, int n) { // n为10次的倒数
		int curSum; // 当前所走的路程
		 if (n <= 1) {
			curSum = curHigh; // 只落下来不弹上去
			return curSum ;
		} else {
			curSum = curHigh + curHigh / 2; // 落下来再弹上去
			return curSum + Sum(curHigh / 2, n - 1);
		}

	}

//其实算法都可以用面向对象解决的。。。
public class Ball {
	float curHigh; // 当前落点高度
	float sum = 0; //记录总高度
	int touchGroundCount = 0;
	int needCount ;
	
	public Ball(int needCount,int curHigh){
		this.needCount = needCount;
		this.curHigh = curHigh;
	}
	private float getNextHigh() {
		return curHigh / 2;
	}

	private void touchGround() {// 碰到地面
		caclCoverdDistance();
		if(touchGroundCount >= needCount)return;
		rebound(curHigh/2);
	}

	private void caclCoverdDistance(){
		touchGroundCount ++;
		if(touchGroundCount == 1)
		sum +=curHigh;
		else sum += curHigh*2; //上次弹上去的高度+这次弹下来的高度
	}
	private void rebound(float high) {//反弹的高度
		this.curHigh = high;
		touchGround();
	}
	public void startFall(){
		touchGround();
	}
	
	public float getSum(){
		return sum;
	}
}


分享到:
评论

相关推荐

    C++试题--递归

    本题考查了学生对于递归算法的理解及其在解决实际问题中的应用能力。通过合理划分问题、逐步减小规模、利用递归特性,能够有效地解决 L 形块填充问题。希望通过对上述思路的梳理,能够帮助考生更好地理解和解答此类...

    递归实现的表达式计算

    通过正确地分解和计算表达式,我们可以用简洁的代码处理各种数学表达式,而链表和字符数组等数据结构的选择则取决于具体的应用场景。在实际编程中,我们需要根据性能、内存使用和代码可读性等因素来权衡不同的实现...

    《程设》实验题目-2018级.pdf

    该题目可能涉及数组的应用来模拟某个场景的变化过程,如酒窖中的酒桶数量随时间变化的情况。 **相关知识点:** - 数组的动态更新 - 二维数组的使用 - 模拟算法 #### 十五、指针运算-调试结果 **知识点解析:** ...

    JAVA编程(递归典型题目)

    摘桃子问题是一个经典的递归应用案例,问题描述为:“有一个人摘桃子,第一天摘下树上桃子的一半再多吃一个,以后每天吃前一天剩下桃子的一半再多吃一个,到第10天只剩下一个桃子,问原来树上有多少个桃子?...

    C++ 递归经典题目全套源代码, 部分含注解.zip

    本压缩包包含了一系列使用C++实现的递归经典题目,旨在帮助学习者深入理解和运用递归。 1. **自然数拆分.cpp**: 这个题目要求将一个自然数拆分成若干个正整数的和,所有可能的拆分情况都要被列出。递归在这里用于...

    递归与分治--acm竞赛资料

    在ACM竞赛中,递归与分治是两种非常重要的算法思想,对于解决复杂问题有着极大的帮助。递归是通过函数自身调用解决问题的方法,而分治则是将一个大问题...通过学习和实践这些题目,你可以更好地理解和运用这两种方法。

    21个题目--“数据结构”课程设计指导书.doc

    通过解决这些题目,学生可以深入理解数据结构的核心概念,如栈、队列、二叉树和字符串匹配算法,并能将其应用于实际问题中,提高解决问题的能力。同时,这些设计题目也涵盖了算法设计、数据处理和文件操作等多方面...

    极简 数独 vb源代码-递归回溯法

    对于初学者来说,这是一个很好的学习资源,可以帮助他们理解递归回溯法以及如何在实际问题中应用编程知识。同时,对于经验丰富的开发者,这样的代码也有助于快速理解算法逻辑,提高开发效率。 总的来说,"极简VB...

    80个it公司的java面试题目-个人总结.rar

    以下是对"80个it公司的java面试题目-个人总结"中可能包含的一些关键知识点的详细阐述: 1. **基础概念**: - **Java版本**:了解Java SE(标准版)、Java EE(企业版)和Java ME(微型版)的区别。 - **JVM(Java...

    杭电ACM 题目分类 不完全 记录搜索,递归求解

    根据给定的信息,本文将对杭电ACM题目中的搜索与递归求解知识点进行详细的解析,特别是针对题目编号为1010、1016、1026、1043(双广)、1044(BFS+DFS)等题目进行深入分析,并涵盖其他相关的知识点。 ### 搜索技术...

    (完整)《C语言程序设计课程设计》题目-软件工程2班.pdf

    《C语言程序设计课程设计》是软件工程类学生的基础实践课程,旨在通过具体的编程题目加深学生对C语言的理解和应用能力,培养学生的逻辑思维和解决实际问题的能力。 本课程设计针对软件工程2班,题目内容涉及到多个...

    递归.rar

    在计算机科学中,递归是一种重要的编程概念,它涉及到函数或过程在解决问题时调用自身的行为。...在"递归.rar"这个压缩包中,很可能包含了一系列递归相关的经典题目和解答,对于学习和掌握递归的概念和应用非常有帮助。

    4-5递归算法与递归程序[归纳].pdf

    在教学中,还设置了不同的递归练习题,让学生体验递归解法的一致性和普适性,即使题目形式各异,但解题思路和结果可能相同。这样的练习有助于深化学生对递归算法的理解。 教学环境方面,建议在多媒体电脑教室进行,...

    排列组合之题目-编程、分水果、竞赛

    总结来说,排列组合在编程、分水果和竞赛中的应用体现了其在实际问题解决中的广泛性和灵活性。通过理解并掌握排列组合的基本原理和算法,我们可以有效地解决这些问题,并在实际编程中实现高效的代码。无论是递归还是...

    5.6 递归思想和递归函数1

    在题目中提到的第一点,如果递归函数没有递归结束的语句,即没有定义基本情况,那么函数会不断地调用自身而无法停止,导致无穷递归,最终可能引发“栈溢出”错误,也就是我们常说的“死循环”。因此,编写递归函数时...

    简单的C语言程序 递归逆序整数

    - 在实际应用中,应考虑输入数据的有效性和边界情况(例如输入非整数值或异常大的整数)。 - 对于递归函数,要注意避免过深的递归导致栈溢出的问题。 通过以上分析,我们可以清晰地了解到这个简单C语言程序的工作...

    javascript-leetcode面试题解递归与回溯问题之第59题递归矩阵-题解.zip

    本题解主要关注的是LeetCode中的第59题,这是一个关于递归与回溯策略的问题,特别是在解决矩阵问题上的应用。递归和回溯是计算机科学中解决问题的两种常用方法,它们在处理复杂逻辑和搜索问题时尤其有效。 递归是一...

    二叉树的遍历——递归以及非递归实现

    vs2010下运行编写,使用了STL栈,实现了基本的插入、删除、计算深度、查找,主要是遍历,包括递归遍历,以及非递归的前序中序后序遍历,每个函数都有测试用例,如果存在错误,请在给我留言。

    Java 数组递归算法的复杂度

    - 考虑文章中提到的递归题目,即计算一个正整数 n 变为 1 的最少操作次数。 - 此递归算法的时间复杂度可以通过递归树来分析。 - 由于算法中存在三种操作(除以 2、加 1 和减 1),因此递归树的分支数量不固定。 - ...

    计算递归函数调用次数

    在实际应用中,需要注意递归函数可能导致栈溢出的问题,特别是当递归深度过深时。为了避免这种情况,可以考虑使用尾递归(Tail Recursion)、记忆化(Memoization)或迭代(Iteration)等优化方法。 尾递归是指在...

Global site tag (gtag.js) - Google Analytics