使用递归获取数字中的数字位置

我目前正在编写一个代码,它返回用户输入的某个数字的位置.我目前正面临一个问题,我的指针不起作用,我认为这是由于递归函数.任何意见,将不胜感激!

#include <stdio.h>

void rDigitPos2(int num, int digit, int *pos);

int main()
{
    int number;
    int digit, result = 0;
    printf("Enter a number: ");
    scanf("%d", &number);
    printf("Enter the digit: ");
    scanf("%d", &digit);
    rDigitPos2(number, digit, &result);
    printf("rDigitPos2(): %d", result);
    return 0;
}

void rDigitPos2(int num, int digit, int *pos) {
    static int count = 0;
    if (num % 10 != digit) { 
    count++; //increment of position
    rDigitPos2(num/10, digit, &pos);

    *pos = count;//returns the position of the digit
}

最佳答案 有效地返回rDigitPos2的1个基本位置

void rDigitPos2(int num, int digit, int *pos)
{
    static int count = 0;
    if (num % 10 != digit)
    {
        count++; //increment of position
        rDigitPos2(num/10, digit, pos);   //Not &pos

    }
    else
    {
        *pos = count;     //Current position from the last
        while(num!=0)
        {
            num = num/10;
            count++;
        }
        *pos = count-*pos;  //Original position form beginning
    }
}

当你的递归的第一部分从最后一个找到位置时,需要找到数字的长度,然后从最后的长度位置将是你的答案.

点赞