【问题标题】:return an even number Recursion返回偶数递归
【发布时间】:2017-10-27 09:09:07
【问题描述】:

我需要编写一个递归函数,它以整数作为输入并返回输入数字的偶数位的串联,即我们应该删除奇数位。

例如:

创造者(1234); 返回数:24。

创造者(459876); 返回号码:486。

好吧,我陷入了死胡同。我不知道如何返回正确的数字。

这是我的代码,我什至不知道我的方法是否正确。

我的代码:

int Creator(int n)
{
    if (n == 0)
        return;

    if ((n % 10) % 2 != 0)
        Creator(n / 10);

    return n % 10;

}

【问题讨论】:

  • 在对Creator 的递归调用中,你如何处理它返回的值?
  • 对 Creator 的递归调用会返回类似 return Creator(n % 10)
  • 可以不用递归吗?
  • 是的,但是如果您可以让基本算法在没有递归的情况下工作,您可以稍后将其转换为使用递归。这样您就不必同时解决两个问题。
  • if (n == 0) return; 不可能是正确的。你必须返回一些东西

标签: c recursion


【解决方案1】:
int Creator(int n){
    if (n == 0)
        return 0;//You must always return a value.
    if (n % 2 != 0)
        return Creator(n / 10);
    return Creator(n / 10) * 10 + n % 10;//It is necessary to accumulate the call result.
}

【讨论】:

  • 你是个天才!工作完美!我有一个问题,因为我想了解,函数如何返回值而不是每次都更改它?
  • @monkey.D.Ganga 我可能不太明白你想问什么。您可以按如下方式更改Creatorint Creator(int n, int accumulater, int mul10 ){ if (n == 0) return accumulater;
  • 不,我的意思是我不明白你代码中的最后一行,它是如何累积结果而不改变它的?
  • 如果你得到2,4的序列,2*10 + 4 ==> 24.(已经得到结果)*10 +(当前一位数尾随)
猜你喜欢
  • 1970-01-01
  • 2017-02-02
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
相关资源
最近更新 更多