递归问题(三角数列 和 二分查找)

package javal.util.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 *  数字序列  1,3,6,10,15,21
 * @author lh
 *
 */
public class SanjiaoNumber {

	/**
	 * @email 15688506227@163.com
	 */
	public static void main(String[] args) {
		try {
			System.out.println(inputNumber());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	/**
	 * @return
	 * @throws Exception
	 */
	public static int inputNumber() throws Exception {
		int input,output;
		InputStreamReader isr = new InputStreamReader(System.in);
		
		BufferedReader rd = new BufferedReader(isr);
		
		String str = rd.readLine();
		
		input =Integer.parseInt(str);
		
		output = triangle(input);
		
		return output;
	}
	
	/**
	 * @param n 第几项
	 * @return
	 */
	public static int triangle(int n) {
		if(n == 1) {
			return 1;
		}else {
			return n + triangle(n-1);
		}
	}
}

            递归就是方法调用自己,数字序列  1,3,6,10,15,21,28,这个数列中,第N项的值等于 (N-1)项加上N 的值。

            有序数组的递归二分查找:

package javal.util.test;

/**
 * 有序数组的二分查找递归方法
 * @author lh
 *
 */
public class BinaryFind {

	/**
	 * @email 15688506227@163.com
	 */
	private long[] array;
	public BinaryFind(long[] array) {
		this.array = array;
	}
	
	public int find(long tar) {
		return selffind(tar, 0, array.length-1);
	}
	/**
	 * 
	 * @param key        查找目标
	 * @param leftBound  数组开始 0
	 * @param rightBound 数组结束 len-1
	 * @return  下标
	 */
	public int selffind(long key, int leftBound, int rightBound) {
		int curIn=(leftBound + rightBound) / 2;
		
		if(array[curIn] == key) {
			return curIn;
		}else  if(leftBound > rightBound) {
			return -1;
		}else {
			if(array[curIn] < key) {
				return selffind(key, curIn+1, rightBound);
			}else {
				return selffind(key, leftBound, curIn -1);
			}
		}
		
	}
	
	public static void main(String[] args) {
		BinaryFind bclass = new BinaryFind(new long[] {1,2,45,55,668});
		System.out.println(bclass.find(55));
		System.out.println(bclass.find(1));
		System.out.println(bclass.find(85));
		System.out.println(bclass.find(668));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
取所有质数 求最小公倍数 求最大公约数 汉诺塔 9X9乘法表 猫捉老鼠(筛选法) 水仙花数问题 计算组合 身份证升级15位升级到18位 用冒泡法排序数字 九宫计算 奶牛问题 求阶乘 折半查找 给歌手打分 航线设置 数字全排列 借书方案 求直角三角形 二分排序 抢30 求回文数 斐波那契数列(递推法) 分块查找 求帕斯卡三角(杨辉三角) 箱子问题(贪婪法) 寻找文件(递归法) 求最大公约数(递归法) 取不重复数(排除法) 拉丁方 波松瓦分酒 皇后问题 背包问题 角谷猜想 邮票组合 贮油点 分解质因数 任意进制转换(大数) 计算星期几(常用公式) 计算星期几(蔡勒公式) 猴子吃桃子 马踏棋盘 打鱼还是晒网 九位累进可除数 十进制转为二进制 九连环 找窃贼 哥德巴赫猜想 最小生成数 农夫过河 旅游最省钱路径 马克思手稿中的数学题 上楼梯(递归).e 上楼梯(非递归) 金额大小写转换 求一元二次方程的根(二分法) 数字与IP地址间的转换 八皇后问题(回溯法) 求N阶幻方 计算分数的精确值 找零钱 求一元二次方程的根(公式法) 比赛日程(分治法) 两个有序数组的合并 统计投色子(2个)的结果 12小球问题 改进冒泡排序法 螺旋数组 射击环数 猜数字游戏 桶排序 造币厂问题 直接插入排序 搬砖 公车座位巧安排 韩信点兵(中国剩余定理) 黑洞数 矩阵相乘 螺旋矩阵问题(多循环法) 买水果问题 求平方根 求任意三角形面积 全排列问题(递推法) 怎样组合值最大 取两数之间均匀分布的随机数
《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为具有一定经验的程序设计人员巩固和提高编程水平,查阅相关算法实现和数据结构知识的参考资料,同时也为那些准备参加与算法和数据结构相关的面试的读者提供一些有益的帮助。最大的特色在于实例丰富,题材新颖有趣,实用性强,理论寓于实践之中。理论与实践相结合,旨在帮助读者理解算法,并提高C语言编程能力,培养读者的编程兴趣,并巩固已有的C语言知识。全书分为2个部分共10章,内容涵盖了编程必备的基础知识(如数据结构、常用算法等),编程实例介绍,常见算法和数据结构面试题等。可以使读者开阔眼界,提高编程的兴趣,提高读者的编程能力和应试能力。 目录: 第1部分 基础篇 第1章 数据结构基础 1.1 什么是数据结构 1.2 顺序表 1.2.1 顺序表的定义 1.2.2 向顺序表中插入元素 1.2.3 从顺序表中删除元素 1.2.4 实例与分析 1.3 链表 1.3.1 创建一个链表 1.3.2 向链表中插入结点 1.3.3 从链表中删除结点 1.3.4 销毁一个链表 1.3.5 实例与分析 1.4 栈 1.4.1 栈的定义 1.4.2 创建一个栈 1.4.3 入栈操作 1.4.4 出栈操作 1.4.5 栈的其他操作 1.4.实例与分析 1.5 队列 1.5.1 队列的定义 1.5.2 创建一个队列 1.5.3 入队列操作 1.5.4 出队列操作 1.5.5 销毁一个队列 1.5.6 循环队列的概念 1.5.7 循环队列的实现 1.5.8 实例与分析 1.6 树结构 1.6.1 树的概念 1.6.2 树结构的计算机存储形式 1.6.3 二叉树的定义 1.6.4.二叉树的遍历 1.6.5 创建二叉树 1.6.6 实例与分析 1.7 图结构 1.7.1 图的概念 1.7.2 图的存储形式 1.7.3 邻接表的定义 1.7.4.图的创建 1.7.5 图的遍历(1)——深度优先搜索 1.7.6 图的遍历(2)——广度优先搜索 1.7.7 实例与分析 第2章 常用的查找与排序方法 2.1 顺序查找 2.2 折半查找 2.3 排序的概述 2.4 直接插入排序 2.5 选择排序 2.6 冒泡排序 2.7 希尔排序 2.8 快速排序 第3章 常用的算法思想 3.1 什么是算法 3.2 算法的分类表示及测评 3.2.1 算法的分类 3.2.2 算法的表示 3.2.3 算法性能的测评 3.3 穷举法思想 3.3.1 基本概念 3.3.2 寻找给定区间的素数 3.3.3 TOM的借书方案 3.4 递归与分治思想 3.4..1 基本概念 3.4.2 计算整数的划分数 3.4.3 递归的折半查找算法 3.5 贪心算法思想 3.5.1 基本概念 3.5.2 最优装船问题 3.6 回溯法 3.6.1 基本概念 3.6.2 四皇后问题求解 3.7 数值概率算法 3.7.1 基本概念 3.7.2 计算定积分 第2部分 编程实例解析 第4章 编程基本功 4.1 字符类型统计器 4.2 计算字符的ASCII码 4.3 嵌套if.else语句的妙用 4.4 基于switch语句的译码器 4.5 判断闰年 4.6 指针变量作参数 4.7 矩阵的转置运算 4.8 矩阵的乘法运算 4.9 巧用位运算 4.10 文件的读写 4.11 计算文件的大小 4.12 记录程序的运行时间 4.13 十进制/二进制转化器 4.14 打印特殊图案 4.15 打印杨辉三角 4.16 复杂级数的前n项和 4.17 寻找矩阵中的“鞍点” 4.18 n阶勒让德多项式求解 4.19 递归反向输出字符串 4.20 一年中的第几天 第5章 数学趣题(一) 5.1 舍罕王的失算 5.2 求两个数的最大公约数和最小公倍数 5.3 歌德巴赫猜想的近似证明 5.4 三色球问题 5.5 百钱买百鸡问题 5.6 判断回文数字 5.7 填数字游戏求解 5.8 新郎和新娘 5.9 爱因斯坦的阶梯问题 5.10 寻找水仙花数 5.11 猴子吃桃问题 5.12 兔子产仔问题 5.13 分解质因数 5.14 常胜将军 5.15 求兀的近似值 5.16 魔幻方阵 5.17 移数字游戏 5.18 数字的全排列 5.19 完全数 5.20 亲密数 5.21 数字翻译器 5.22 递归实现数制转换 5.23 谁在说谎 第6章 数学趣题(二) 6.1 连续整数固定和问题 6.2 表示成两个数的平方和 6.3 具有特殊性质的数 6.4 验证角谷猜想 6.5 验证四方定理 6.6 递归法寻找最小值 6.7 寻找同构数 6.8 验证尼科彻斯定理 6.9 三重回文数字 6.10 马克思手稿中的数学题 6.11 渔夫捕鱼问题 6.12 寻
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值