首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归划分(数论)函数的问题

递归划分(数论)函数的问题
EN

Stack Overflow用户
提问于 2010-12-10 14:50:15
回答 1查看 2.2K关注 0票数 1

例如:假设你的用户输入是6,那么加起来等于6的序列数是11 (包括6本身)。我遇到的问题是,当用户输入1或6时,它可以工作,但如果不是这样,它就太离谱了,我不知道为什么。

如果需要,我可以提供更多关于这个主题的信息。

代码语言:javascript
复制
#include <iostream>

using namespace std;

int sum(double number, int min, int & counter)
{
    int temp=0, n;
    n=number+temp;

    if (number>=(n/2.0)+.5 && (number!=1))
    {
        number --;
        temp ++;
        while (number>=(n/2.0))
        {
            number --;
            temp ++;
            counter ++;
        }
    }
    else if (number==1)
    {
        counter ++;
        return 0;
    }

    sum(n-1, 1,counter);

    return 0;
}

int main()
{
    int counter=1;
    double number;

    cout << "-------------------------------------------------------\n"
         << "Please enter the number: ";

    cin >> number ;
    cout << "\n";

    if (number!=1)
    {
        sum(number, 1, counter);
    }


    cout << "The total number of combinations that result in a sum of "
         << number << " is: " << counter
         << "\n-------------------------------------------------------\n";

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-10 15:47:30

我读过你提到的维基文章,它们给出了一些如何构建递归定义函数的说明。它看起来和你的代码不一样。下面的代码适用于我

代码语言:javascript
复制
#include <iostream>

using namespace std;

int sum(int k, int n)
{
    if(k == 1 || n == 1)
        return 1;

    if(k < n)
        return sum (k, k);
    else if (k == n)
        return 1 + sum (k, k-1);
    else
        return sum (k,n-1) + sum (k-n, n);
}

int main (void)
{
    int counter=1;
    double number;

    cout << "-------------------------------------------------------\n"
         << "Please enter the number: ";

    cin >> number ;
    cout << "\n";

    counter = sum(number, number);

    cout << "The total number of combinations that result in a sum of "
         << number << " is: " << counter
         << "\n-------------------------------------------------------\n";

    return 0;
}

你可以用here测试这段代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4406414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档