java算法面试题:递归算法题1
递归算法题1
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。
例:n=1237
则输出为:
1237,
2474,
4948,
9896,
9896,
4948,
2474,
1237,
提示:写程序时,先致谢按递增方式的代码,写好递增的以后,再增加考虑递减部分。
package com.swift; public class Digui_Dizeng_Dijian { public static void main(String[] args) { /* * 一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n的顺序递增,当值大于5000时,把值按照指定顺序输出来。 例:n=1237 则输出为: * 1237, 2474, 4948, 9896, 9896, 4948, 2474, 1237, */ int n = 1237; dizeng(n); System.out.println(sum(100)); } //无返回值递归 public static void dizeng(int n) { System.out.println(n); if(n>9000) { dijian(n); } if (n < 5000) { dizeng(n * 2); } } public static void dijian(int n) { System.out.println(n); if(n==1237) { System.exit(0); }else { dijian(n/2); } } //有返回值递归 public static int sum(int num) { if (num > 1) { return num + sum(num - 1); } else { return 1; } } }
Never waste time any more, Never old man be a yong man