半数单集问题概要.ppt

半数单集问题概要

1.问题描述 2.算法设计 3.代码 4. 数据输入及结果输出 半数单集问题 1.问题描述 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: n set(n);(0n201) (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; 按此规则进行处理,直到不能再添加自然数为止。 注意:该半数集不是多重集,集合中已经有的元素不再添加到集合中。 2.算法设计 算法设计:对于给定的自然数n,计算半数集set(n)中的元素个数。 这是一个典型的递归问题,通过调用自身来解决问题。 递归有两个关键: 退出递归的条件 递归的层次问题 在这个问题中,要算出set(n)的元素个数,需要先算出 set(1) 到 set(n/2),就形成了递归关系。 1 1 1 2 1 1 1 4 3 2 1 1 1 3 2 1 1 2 1 2 1 1 9 6 5 4 3 2 1 2.算法设计 在本题中仅是计算元素的个数,例如:set(6)={6,16,26,126,36,136}。 6 16 26 126 36 136 给定的最初的一个自然数6,元素个数为1 进入递归函数:在6的左边加上一个自然数,这个自然数的值0n=3,也就是说,这个自然数可选

文档评论(0)

1亿VIP精品文档

相关文档