递归求解一个正数等于正连续数相加

原创
2019/11/19 15:31
阅读数 78
/**
 * 输入15,输出:1,2,3,4,5;4,5,6;7,8;
 */
public class ZhengXuHe {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean boo = true;
        while (boo) {
            System.out.print("输入计算的数:");
            int a = sc.nextInt();
            if (a > 0) {
                int sum = 0;
                String ss = "";
                System.out.print("符合这个数的有:");
                for (int i = 1; i < (a + 1) / 2; i++) {
                    for (int j = i + 1; j <= (a + 1) / 2; j++) {
                        sum = fsum(i, j);
                        if (sum == a) {
                            ss = fstring(i, j);
                            System.out.print(ss);
                            System.out.print(";");
                        }
                    }
                }
                System.out.println();
            } else {
                return;
            }
        }
    }

    //递归拼接字符串
    private static String fstring(int i, int j) {
        String sss = "";
        if (i == j) {
            sss = i + "";
        } else {
            sss = fstring(i, j - 1) + "," + j;
        }
        return sss;
    }

    //递归求和
    private static int fsum(int i, int j) {
        if (i == j) {
            return i;
        } else {
            return j + fsum(i, j - 1);
        }
    }
}
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部