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

时间:2015-09-20 08:00:33

标签: c pointers recursion

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

- (void)viewDidLoad {
    [super viewDidLoad];

    ViewController * ViewCon = [[ViewController alloc]init];
    **//Change variable here by defining the new CGRect here.**
    [ViewCon method:self.view];
}

3 个答案:

答案 0 :(得分:0)

变化

rDigitPos2(num/10, digit, &pos);

rDigitPos2(num/10, digit, pos);

以及次要细节

答案 1 :(得分:0)

GCC编译器发出重要警告,将&pos替换为pos

ss.c:20:31: warning: incompatible pointer types passing 'int **' to parameter of type 'int *'; remove & [-Wincompatible-pointer-types]
    rDigitPos2(num/10, digit, &pos);
                              ^~~~

谦卑的请求,请不要忽视警告:)

答案 2 :(得分:0)

有效返回rDigitPos2的基本位置

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
    }
}

当递归的第一部分找到最后一个位置时,需要找到数字的长度,然后length-position from last将是你的答案。