gpt4 book ai didi

c - 查找数字位置

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:52 24 4
gpt4 key购买 nike

我要编写一个递归函数int digitpos(int num, int digit),它接受一个正整数numdigit 返回 numdigit 从 1 开始从右数第一次出现的位置。如果没有找到,则返回 0将被退回。

例如,digitPos(12234, 2) 将产生 3digitpos(123, 8) 将产生 0

int digitPos(int n, int digit)
{
if (n == 0) return 0;
if (n % 10 == digit) return 1;
return 1 + digitPos(n / 10, digit);
}

如果数字中存在数字,则上述方法有效。如果没有,它将打印出有多少位数字(因为它遍历所有数字)。

在我看来,仅给定这两个参数就不可能通过递归来做到这一点。当然,通过迭代我可以做到。但我想知道是否可以通过递归实现?

最佳答案

函数可以这样写,例如

int digitPos( unsigned int n, unsigned int digit )
{
if ( n % 10 == digit ) return 1;

if ( ( n /= 10 ) == 0 ) return 0;

int i = digitPos( n, digit );

return i == 0 ? 0 : i + 1;
}

这是一个演示程序

#include <stdio.h>

int digitPos( unsigned int n, unsigned int digit )
{
if ( n % 10 == digit ) return 1;

if ( ( n /= 10 ) == 0 ) return 0;

int i = digitPos( n, digit );

return i == 0 ? 0 : i + 1;
}

int main( void )
{
printf( "%d\n", digitPos( 12345, 2 ) );

return 0;
}

输出是

4

请注意 0 是一个有效数字。:)

关于c - 查找数字位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com