以下关于C++实现正整数无序拆分的递归代码中,正确的是?

uv275342 单选题 共 个子题

正整数无序拆分指将正整数n拆分为若干正整数之和,不计顺序且允许重复使用拆分项。现有如下四个递归实现选项,其中能正确计算拆分方案数的是?

A
int split(int n) {
    if(n == 0) return 1;
    int cnt = 0;
    for(int i=1; i<=n; i++) cnt += split(n-i);
    return cnt;
}
B
int split(int n, int min_num) {
    if(n == 0) return 1;
    int cnt = 0;
    for(int i=min_num; i<=n; i++) {
        cnt += split(n - i, i);
    }
    return cnt;
}
// 调用时初始执行split(n, 1)
C
int split(int n) {
    if(n == 1 || n == 0) return 1;
    return split(n-1) + split(n-2);
}
D
int split(int n, int max_num) {
    if(n == 0) return 1;
    if(n <0 || max_num ==0) return 0;
    return split(n, max_num+1) + split(n - max_num, max_num);
}
正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧