c - 仅使用递归来执行此操作

标签 c function recursion definition

编写一个递归函数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/

相关文章:

c - 为什么这个C程序会崩溃?没有报告错误

c - 如果用户选择特定功能,则结束循环

javascript - 为什么我的 JavaScript 可以在这里运行,但不能在我的本地主机或 JSFiddle 中运行?

Python:名称未定义错误,即使函数在调用前已明确定义

c - 如何在不进行目录迭代的情况下在 Linux 上获取区分大小写的路径?

CUDA 记录并等待事件不起作用?

c# - 生成站点地图的递归算法

java - 使用 BufferedReader 进行递归

iphone - MiniZip 泄漏

有人可以解释一下这种递归是如何工作的吗?