编写一个递归函数evenDigits,它接受整数参数n,并以相同的顺序返回一个仅包含n中偶数位的新整数。如果n不包含偶数,则返回0。
例如,调用evenDigits(8342116)应返回8426,调用evenDigits(35179)应返回0。
最佳答案
这是我的五美分。:)
#include <stdio.h>
int evenDigits( int n )
{
const int Base = 10;
int digit = n % Base;
int even = digit % 2 == 0;
if ( !even ) digit = 0;
return ( n /= Base ) == 0 ? digit
: ( even ? Base : 1 ) * evenDigits( n ) + digit;
}
int main(void)
{
printf( "evenDigits( 8342116 ) = %d\n", evenDigits( 8342116 ) );
printf( "evenDigits( -8342116 ) = %d\n", evenDigits( -8342116 ) );
printf( "evenDigits( 35179 ) = %d\n", evenDigits( 35179 ) );
printf( "evenDigits( -35179 ) = %d\n", evenDigits( -35179 ) );
return 0;
}
程序输出为
evenDigits( 8342116 ) = 8426
evenDigits( -8342116 ) = -8426
evenDigits( 35179 ) = 0
evenDigits( -35179 ) = 0
关于c - 仅使用递归来执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60125188/