蓝桥杯:倍减序列
问题描述
一个以正整数k开始的倍减序列,是一个不定长的有序的正整数序列,它的第一个元素为k,第二个元素不大于第一个元素的一半,第三个元素不大于第二个元素的一半,依此类推。
例如,下面列出了所有的以6开始的倍减序列,共有6个:
6
6 1
6 2
6 2 1
6 3
6 3 1
任务要求:对于给定的正整数k,请找出以k开始的倍减序列的个数。
输入格式
输入包含了一个正整数k。(k<=100)
输入格式
输出一个整数,表示以k开始的倍减序列的个数。
样例输入
6
样例输出
6
样例输入
10
样例输出
14
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
String str="";
ArrayList<String> list=new ArrayList<>();
System.out.println(recursion(n, str, list).size());//list的元素个数,就是结果
}
public static ArrayList<String> recursion(int n, String str, ArrayList<String> list){
if (n!=0){//不等于0继续,等于0说明前一个是1
str=n+str;
list.add(str);
for (int i=n/2;i>0;i--){//比一半小或相等的都能与n搭配
recursion(i, str,list);//递归n=i,//比一半小或相等的都能与n搭配
}
}
return list;
}
}