我已经创建了一个函数,我试图让它递归。有没有人有关于如何使这个函数递归的任何提示?我知道递归意味着在函数本身中使用该函数。
int countEven(int n){
int evens = 0;
if(n <= 0) return 0; //base case
while(n > 0){
int digit = n%10; //get the last digit
if(digit%2 == 0){
evens = evens + 1;
}
n = n/10;
}
cout << evens;
}
答案 0 :(得分:3)
int rec(int n)
{
int sum = 0;
if(n<=0)
return 0;
else if ((n%10)%2==0)
sum = rec(n/10)+1;
else
sum = rec(n/10);
return sum;
}
也许是这样的事情:)
答案 1 :(得分:2)
对于计算整数基数10 的偶数,您可以将函数简化为以下
[assembly: AssemblyTitle("Stack Overflow")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("FooBar")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("StackOverflow Test")]
[assembly: AssemblyCopyright("Copyright © fooBar 2018")]
这扩展如下。假设int countEven(int n)
{
if (n != 0) return !(n % 2) + countEven(n/10);
else return 0;
}
:
n = 258
请注意,如果 countEven(258) =
1 + countEven(25) =
1 + 0 + countEven(2) =
1 + 0 + 1 + countEven(0) = 2
为偶数,则!(n % 2)
语句会返回 1 ,如果是奇数,则返回 0 。
如果更短,您可以执行以下操作:
n
答案 2 :(得分:1)
好像你正试图计算数字中的偶数位数
int countEven(int n){
if(n == 0)
return 0; //base case
if (n<10)
return !(n%2);
return !(n%2)+countEven(n/10);
}
答案 3 :(得分:0)
看起来像是从QC收到的类似问题。
要使其递归,您必须具有调用自身的函数。询问如何使输入更简单并具有某种基础,以便功能不会中断。
int countEven(int number) {
if (x <= 0) return 0;
if (x % 2 == 0) {
return countEven(number / 10) + 1;
}
return countEven(number / 10)
}