算法题:(递归)半数集问题。

168 阅读1分钟

前言

算法练习记录

题目

半数集问题。

问题描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:
(1) n属于set(n) ;
(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
(3) 按此规则进行处理,知道不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136},半数集set(6)中有6个元素。
输入:整数n(0<n<1000)
输出:半数集set(n)中的元素个数。

截图

1

代码(java):

package com.hb;

public class AlgorithmTest8 {
    public static int solve(int n)
    {
        if(n==0)return 1;

       int sum = 0;
        for(int i=0;i<=(n/2);i++)
            sum+=solve(i);

        return sum;
    }
    public static void main(String[] args) {
        int n = 6;
        System.out.println("set("+n+")半数集元素个数"+solve(n));
    }
}


本文使用 文章同步助手 同步