日期:2014-05-20  浏览次数:20699 次

求编写一个递归程序的思路
  我刚学java没多久,而且数学很一般......
  题目是: 给定大于0的整数n,要求输出由 1元、2元和5元纸币组成的n元钱的所有方案 . ...要有解题的思路和相应的代码(希望有注释)....用递归方法..我数学不太好...汉诺塔问题都没有完全理解..希望讲的详细些 ....
  当然,不用递归也行, 给出思路和代码... ..
   求给位大神指点一下 ...

------解决方案--------------------
题意没太看懂,
递归的话搞个简单的,就拿获取文件夹中的文件为例吧,
File file = new File("d:")
File [] fileList = null;

public void getAllFile()
{
  if (file.isDectory())
  {
    fileList = file.list();
    for (int i=0;i<fileList.length;i++)
    {
      getAllFile();
    }
  }
}

简单的写了下,应该有些小问题什么的,不过思路就是这样的,当你满足某一个条件后,就会重复调用同一个方法。
楼主可以去baidu搜索一下递归的例子。
------解决方案--------------------
思路:先找出最大的数字,此题中是5元,然后用n除以5元,得到商和余数,for循环,递减这个商,余数作为n递归调用此方法,直到商为0
自己先思考尝试做做 稍后给你代码看看
------解决方案--------------------
其实这个题用递归并不是很好,但是能做.
public class Hello {
    public static void foo(int n) {
        if (n < 1) { return; }

        if (n >= 5) {
            System.out.print(5 + ", ");
            foo(n - 5);
        } else if (n >= 2) {
            System.out.print(2 + ", ");
            foo(n - 2);
        } else if (n >= 1) {
            System.out.print(1 + ", ");
            foo(n - 1);
        }
    }

    public static void main(String[] args) {
        foo(18);
    }
}