问题描述:
给定一个自然数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)中的元素个数。
分析:
首先应该明确什么是半数集,半数集就是给定一个数,在这个数的左边添加新的数字(如6,左边添加新的数字2,就变为26),新添加的数字应该小于或等于这个数的左边第一个数字的一半(如59,则应当小于5/2),所以叫做半数,而由这些数字构成的集合就是半数集。
以6为例,6的半数集求解图示如下:

源代码如下(递归与非递归均有):
package recursion;
import java.util.Scanner;
public class Half_set {
int set(int n) {
int sum=

博客围绕给定自然数n产生半数集set(n)展开。介绍了半数集规则,即n属于set(n),可在n左边加不超最近添加数一半的自然数,直至无法添加。给出输入整数n求set(n)元素个数的问题,并对半数集概念进行分析,还提供了递归与非递归源代码。
最低0.47元/天 解锁文章
6998

被折叠的 条评论
为什么被折叠?



