我目前正在编写一个代码,它返回用户输入的某个数字的位置.我目前正面临一个问题,我的指针不起作用,我认为这是由于递归函数.任何意见,将不胜感激!
#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
}
}
当你的递归的第一部分从最后一个找到位置时,需要找到数字的长度,然后从最后的长度位置将是你的答案.