0 0

递归调用5

有六种不同面值的硬币 1分,2分,5分,1角,2角,5角,用找这六个不同面值的硬币组合成一元的,写一个方法得到组合的方案次数
2008年11月19日 21:11

2个答案 按时间排序 按投票排序

0 0

采纳的答案

这其实就是自然数拆分的算法,其实是一样的,只不过把数字换成了硬币面值并且面额固定。
下面的算法是自然数拆分的,你参考下吧。

public class ChaiFenShu {

	/**
	 * 存储拆分好的数字
	 */
	int store[] = new int[1000];
	int Count = 0;

	/**
	 * 
	 * @param numberToSplit
	 *            需要拆分的数
	 * @param currentBit
	 *            拆分的进度
	 */
	public void SplitNumber(int numberToSplit, int currentBit) {
		int restNumberToSplit;
		
		for (int i = store[currentBit - 1] + 1; i <= numberToSplit; i++) { // 从比上一个拆分的数大1开始继续拆分
			store[currentBit] = i; 	// 将这个数计入结果中
			restNumberToSplit = numberToSplit - i; 	// 剩下的数是n-i
			
			if (restNumberToSplit == 0 && currentBit > 1) { // 如果已经没有剩下的了,并且进度(总的拆分个数)大于1,说明已经得到一个结果。
				increaseCount();
				printCurrentSplit(currentBit);
			} else {
				SplitNumber(restNumberToSplit, currentBit + 1); //否则将剩下的数进行进度为m+1拆分。
			}
			
			store[currentBit] = 0; // 取消本次结果,进行下一次拆分。
		}
		
		//否则不进行拆分了
	}

	/**
	 * 增加计数
	 * @param currentBit
	 */
	private void increaseCount() {
		Count++;
		System.out.println();
	}
	
	private void printCurrentSplit(int currentBit){
		for (int j = 1; j <= currentBit; j++) {
			System.out.print(" " + store[j]);
		}
	}

	public void print() {
		System.out.println();
		for (int i = 1; i < store.length && store[i] != 0; i++) {
			System.out.print(" " + store[i]);
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ChaiFenShu chaiFenShu = new ChaiFenShu();
		chaiFenShu.SplitNumber(15, 1);
		chaiFenShu.print();

	}

}


2008年11月19日 22:47
0 0

for (int i = store[currentBit - 1] + 1; i <= numberToSplit; i++)


循环这里换成 1分,2分,5分,1角,2角,5角就可以了

2008年11月19日 22:50

相关推荐

    递归调用详解,分析递归调用的详细过程[参考].pdf

    "递归调用详解" 递归调用是软件开发中一个重要的概念,它是函数实现的一个很重要的环节,许多程序中都或多或少的使用了递归函数。递归的意思就是函数自己调用自己本身,或者在自己函数调用的下级函数中调用自己。...

    函数递归调用堆栈分析.doc

    函数递归调用堆栈分析 函数递归调用堆栈分析是指在计算机科学中,函数递归调用时,函数调用自身的过程中,如何使用堆栈来存储变量和参数的过程。堆栈是一种 lasts-in-first-out(LIFO)的数据结构,用于存储函数...

    一个简单的递归调用的实例

    在这个“一个简单的递归调用的实例”中,我们将深入探讨递归调用在.NET项目中的应用,特别是如何利用递归来遍历目录树。 递归调用的基本思想是,一个问题的解可以分解为一个或多个与原问题相同但规模更小的子问题。...

    C语言函数递归调用学习教案.pptx

    C语言函数递归调用学习教案 C语言函数递归调用是指在调用一个函数的过程中,出现直接或间接地调用该函数本身的现象。递归调用可以用来解决一些复杂的问题,但也需要注意递归调用的深度和性能问题。 函数的递归...

    C语言函数递归调用PPT课件.pptx

    C语言函数递归调用PPT课件 函数的递归调用是指在调用一个函数的过程中,出现直接或间接地调用该函数本身的现象。例如,函数f调用函数f1,函数f1调用函数f2,函数f2调用函数f1,这样就形成了一个递归调用链。 递归...

    递归调用详解,分析递归调用的详细过程

    递归调用详解,代码详细讲解了如递归调用以及调用中应该注意的一些问题

    C语言函数的嵌套调用和递归调用PPT课件.pptx

    C语言函数的嵌套调用和递归调用 本文主要介绍C语言函数的嵌套调用和递归调用,包括函数的递归调用、变量的作用域和存储类型等知识点。 函数的递归调用 函数的递归调用是指函数直接或间接地自我调用的一种调用方式...

    3.7 函数的递归调用(ppt).pdf

    在MATLAB编程中,函数的调用方式有多种,其中包括函数的嵌套调用和递归调用。这里我们将深入探讨这两个概念。 1. **函数的嵌套调用**: 函数的嵌套调用是指在一个函数的定义内部,直接或间接地调用了其他函数。这种...

    32位无符号乘法/递归调用程序

    该程序通过一系列汇编指令实现了32位无符号乘法的计算,并通过递归调用子程序的方式输出计算结果。通过对输入输出、数据处理及计算逻辑的详细解析,我们不仅可以了解该程序的具体工作原理,还能学习到如何使用汇编...

    树的无限分级递归调用

    在本话题中,我们将深入探讨“树的无限分级递归调用”这一主题,特别关注如何在Visual Studio 2010环境下利用递归实现树的层级遍历。递归是一种函数或过程在其定义中直接或间接地调用自身的技术,常用于解决具有重复...

    C语言递归调用举例

    C语言递归调用举例,可直接复制粘贴。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    一个递归调用的存储过程

    递归调用的存储过程是指该存储过程在其执行过程中会调用自身,形成一种自相似的结构,通常用于处理层次数据或者实现特定的算法。在给定的标题“一个递归调用的存储过程”中,我们可以推测这个存储过程利用了递归机制...

    java实现递归调用

    本篇文章将详细介绍如何使用Java实现递归调用来遍历一棵树,并结合SQL代码进行说明。 首先,我们需要理解树的基本概念。树是一种非线性的数据结构,由节点(或称为顶点)和边组成。每个节点可以有零个或多个子节点...

    有关TreeView递归调用

    ### 有关TreeView递归调用 #### 知识点概览 在.NET框架中,`TreeView` 控件常被用于展示具有层次结构的数据,如文件系统、组织结构等。通过递归调用的方式绑定数据到`TreeView` 控件是实现这一功能的有效手段之一。...

    .net TreeView 动态绑定数据库 无限级树目录 递归调用

    本主题将深入探讨如何在.NET中利用TreeView控件动态地从数据库中加载并显示无限级别的目录结构,同时使用递归调用来实现这一功能。 首先,我们要理解动态绑定的概念。动态绑定是指在运行时根据需要从数据源加载数据...

    C语言函数的嵌套调用和递归调用学习教案.pptx

    C语言函数的嵌套调用和递归调用学习教案.pptx

    vue 组件递归调用

    vue组件递归调用,展示树状结构,

    使用c语言实现递归调用, 主要考察递归调用

    ### 使用C语言实现递归调用 #### 一、递归的基本概念 递归是一种算法设计方法,在这种方法中,函数直接或间接地调用自身。递归通常用于解决那些可以分解为更小规模同类问题的问题。一个递归算法通常包含两个部分:...

    VB6.0过程的递归调用

    递归调用是指在执行一个过程或函数时,该过程或函数又在其内部直接或间接地调用自身。这种调用方式可以解决某些复杂问题,如树遍历、分治策略和动态规划等。下面我们将深入探讨VB6.0中递归调用的原理、实现方法、优...

    算法进阶 01 递归调用 打表

    在编程领域,算法是解决问题的关键,而递归调用是算法设计中的一种重要技术。递归调用是指函数或方法在执行过程中调用自身的过程,它通常用于解决那些可以通过简化问题规模来解决的问题。本节将深入探讨递归调用的...

Global site tag (gtag.js) - Google Analytics