我目前正在编写一个代码,该代码返回用户输入的某个数字的位置。我目前正面临一个问题,我的指针不起作用,我认为这是由于递归函数。任何意见,将不胜感激!
- (void)viewDidLoad {
[super viewDidLoad];
ViewController * ViewCon = [[ViewController alloc]init];
**//Change variable here by defining the new CGRect here.**
[ViewCon method:self.view];
}
答案 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
将是你的答案。