JAVA:递归实现输出正整数和等于n的所有不增的正整数和式
来源:互联网 发布:java生成随机数 编辑:程序博客网 时间:2024/05/27 14:12
递归实现输出正整数和等于n的所有不增的正整数和式(JAVA)
- 碰到递归,瞬间感觉脑细胞不够用了 其实感觉并没有用到递归的精髓,更像是穷举遍历,把后面的判断条件放到外面main函数 就完全是穷举了
- 关于数组的使用,是受到书本上的提示
package pers.mine.test;public class ToDo { int []a=new int[20]; int oneNum=0; public static void main(String[] args) { ToDo one=new ToDo(); one.oneNum=7; one.a[0]=one.oneNum; System.out.print(one.oneNum+"="); System.out.printf("%2d\n",one.oneNum); one.exOne(one.oneNum, 0); } public void exOne(int num,int end){//表示最后一个位置是end,要分解的数为num //分解 a[end]=a[end]-1; int orther=num-a[end];//剩余值 if(orther<=a[end]){ a[end+1]=orther;//放入 end++;//使end与当前指向匹配 }else{ do{ a[end+1]=a[end]; end++; orther=orther-a[end]; }while(orther>a[end]); a[end+1]=orther;//放入 end++; } //后续没清除的值会影响计算结果 int len=a.length; while((end+1)<=(len-1)&&a[end+1]!=0){ a[end+1]=0; end++;//end与指向匹配 } //输出数组 int i=0; System.out.print(this.oneNum+"="); while(a[i]!=0){ if(i==0){ System.out.printf("%2d",a[i]); }else{ System.out.printf("+%2d",a[i]); } i++; } System.out.println(); //判断数组里的值有没有大于1的,有的话,继续分解 int one=end; int temp=0; while(one>=0){ temp=temp+a[one]; if(a[one]>1){ this.exOne(temp, one); one=end; } one--; } //如果都没有,说明分解完毕, }}
运行结果
0 0
- JAVA:递归实现输出正整数和等于n的所有不增的正整数和式
- 用递归方法 实现 输出正整数和等于n的所有正整数和式
- 对于正整数N,输出其和等于N且满足以下限制条件的所有正整数的和式
- java实现输入一个正整数n,输出全部连续正整数相加后等于n的所有序列。
- 面试题:输入一个正整数n,输出所有的连续正整数之和等于n的序列
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 正整数n的所有可能和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合
- 求正整数n所有可能的和式的组合。
- 求正整数n所有可能的和式的组合
- 求正整数 n 所有可能的和式的组合
- 输出所有小于等于n(n为一个大于2的正整数)的素数
- 输入任意一个大于2的正整数n,输出所有小于等于n的素数
- Android UiAutomator :关于Object属性clickable为false处理
- Vitamio中文API文档(5)—— MediaPlayer
- ubuntu14.04下git服务器使用说明
- JDK代理机制 学习总结
- bzoj 1513: [POI2006]Tet-Tetris 3D(二维线段树+标记永久化)
- JAVA:递归实现输出正整数和等于n的所有不增的正整数和式
- mdf数据库文件数据修复/误删除格式化重装系统覆盖数据库数据恢复
- C++ switch语句后表达式的类型,vs2015试过
- Linux系统设置WiFi热点
- Weex Android SDK源码分析之Module(navigator)
- cheet 4 二叉树
- 匈牙利算法c++代码
- C语言中可变参数函数实现原理
- python3 标准库 urllib.request