递归做法(JAVA面试题续)
2006-07-03 15:38
387 查看
如果10=1+9; 10=1+2+7; …… 如果1+9 和 9+1 被认为是同一个 那么对于10000,可以有多少种加法?
上次已经给出一种方法解决,虽然心里明白用递归最合理,但觉得一用递归大脑就迷糊,为了尽快找出答案就用了另外的方法。现在又用递归完成了。
总结的使用递归注意点:
1 明确输入
2 明确输出
3 明确递归调用终止的条件
在本题中,输入为ordNum和recurNum,输出为count, 终止条件是对recurNum分解时(recurNum=ordNum+(recurNum-ordNum)), 第一个加数超过了第二个加数。
代码如下:
class Recursion{
//count record sum of depart methods
static int count=0;
public static void depart(int ordNum,int recurNum){
//ordNum is the recursion number as the same time also one of the addends
//recurNum is the number int this time of recursion which shuld be departed
int left=recurNum-ordNum;
//only when ordNum<=left, we can decide this time it's successful to depart recurNum
if(ordNum<=left){
count++;
System.out.print(" +"+ordNum);
int newOrdNum=ordNum+1;
int newRecurNum=left;
depart(newOrdNum,newRecurNum);
}
//recursin end
else{
System.out.println(" +"+recurNum);
System.out.println("count="+count);
}
}
public static void main(String args[]){
System.out.print("10000 =");
depart(1,10000);
}
}
上次已经给出一种方法解决,虽然心里明白用递归最合理,但觉得一用递归大脑就迷糊,为了尽快找出答案就用了另外的方法。现在又用递归完成了。
总结的使用递归注意点:
1 明确输入
2 明确输出
3 明确递归调用终止的条件
在本题中,输入为ordNum和recurNum,输出为count, 终止条件是对recurNum分解时(recurNum=ordNum+(recurNum-ordNum)), 第一个加数超过了第二个加数。
代码如下:
class Recursion{
//count record sum of depart methods
static int count=0;
public static void depart(int ordNum,int recurNum){
//ordNum is the recursion number as the same time also one of the addends
//recurNum is the number int this time of recursion which shuld be departed
int left=recurNum-ordNum;
//only when ordNum<=left, we can decide this time it's successful to depart recurNum
if(ordNum<=left){
count++;
System.out.print(" +"+ordNum);
int newOrdNum=ordNum+1;
int newRecurNum=left;
depart(newOrdNum,newRecurNum);
}
//recursin end
else{
System.out.println(" +"+recurNum);
System.out.println("count="+count);
}
}
public static void main(String args[]){
System.out.print("10000 =");
depart(1,10000);
}
}
相关文章推荐
- 经典面试题:单链条反转的递归与非递归方法及分析[Java]
- 常见Java面试题 :迭代(iteration)和递归(recursion)
- 常见的几道关于递归的JAVA面试题
- 常见Java面试题 :迭代(iteration)和递归(recursion)
- 面试题—Java递归实现约瑟夫环
- java面试题【递归】和【循环】的考察7月中旬
- Java面试题中的关于单例模式、冒泡排序、递归
- 由字符串反转(使用递归)引申出来一道Java面试题
- JAVA面试题---用java程序遍历二叉树(递归与非递归)
- 面试题-程序题-Java递归实现遍历文件目录(所有文件夹和子文件)
- 【转】常见Java面试题 – 第四部分:迭代(iteration)和递归(recursion)
- java递归常见的面试题
- 由字符串反转(使用递归)引申出来一道Java面试题
- 常见Java面试题 :迭代(iteration)和递归(recursion)
- java 递归 面试题
- 由字符串反转(使用递归)引申出来一道Java面试题
- 面试题二: java 实现二叉树的中序优先遍历,不能用递归
- java递归面试题
- 剑指Offer 面试题25:合并两个排序的链表(递归+非递归) Java代码实现
- 面试题总结——JAVA高级工程师(三)