2017-05-26 68 views
2

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

例如:

创建者(1234); 退货编号:24.

创作者(459876); 退货编号:486.

嗯,我相当卡住死胡同。我不知道如何返回正确的数字。

这是我的代码,我甚至不知道我是否以正确的方式如此。

我的代码:

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

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

    return n % 10; 

} 
+1

在递归调用'Creator',你是做什么用的值是*回报*? –

+0

对Creator的递归调用会返回类似于'return Creator(n%10)' – Badda

+0

你可以不递归吗? – melpomene

回答

5
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. 
} 
+0

你是一个天才!完美的作品!我有一个问题,因为我想了解,该函数如何返回值,而不是每次都改变它? –

+0

@ monkey.D.Ganga我可能不明白你想问什么。您可以按如下方式更改“创建者”。 'int Creator(int n,int accumulater,int mul10){ if(n == 0) return accumulater;' – BLUEPIXY

+0

no我的意思是我不理解代码中的最后一行,它如何累加结果而不改变它? –