【问题标题】:Problem with a recursive partition (number theory) function递归分区(数论)函数的问题
【发布时间】:2010-12-10 06:50:15
【问题描述】:

示例:假设您的用户输入是 6。那么总和为 6 的序列数是 11(包括 6 本身)。我遇到的问题是,当用户输入 1 或 6 时它可以工作,但如果不是,它就太远了,我不知道为什么。

如果需要,我可以提供有关该主题的更多信息。

#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;
}

【问题讨论】:

标签: c++ function recursion data-partitioning


【解决方案1】:

我阅读了您指出的 wiki 文章,它们提供了一些说明如何构建递归定义的函数。它看起来与您的代码不同。下面的代码对我有用

#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

【讨论】:

  • 有一个问题是它必须是递归的。
  • 有一个问题是它必须是递归的。编辑哦,哇,我智障链接变得很奇怪对不起。这是!感谢他们的帮助,这应该让我上路!真的很感激!
猜你喜欢
  • 2015-01-27
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2017-05-04
相关资源
最近更新 更多