C中的递归函数,它从给定数字的右边返回第n个数字

时间:2018-12-30 22:01:40

标签: c recursion

函数int digit(int number,int position)必须为递归,并从右侧返回位置“ position”中的“ number”数字。因此,在我的代码中,其中number = 5864和position = 3,该函数应返回“ 8”。这是主要代码。

#include <stdio.h>

int digit(int number,int position);

 int main (){
int number=5864, position=3, result;
result=digit(number,position);
printf("result: %d\n",result );
system("pause");

return 0;
}

int digit(int number,int position){}

我知道这个问题已经被提出了,但是我真的很难使它递归。 感谢您的关注。

2 个答案:

答案 0 :(得分:0)

对于递归定义,您需要两件事-有关如何继续进行递归的规则,以及有关如何停止递归的规则。对于此用例,可以将这些规则形式化如下:

  • 如果position == 1,则返回最右边的数字
  • 如果position> 1,将number除以10并递减位置

或者,用C代码:

int digit(int number, int position) {
    if (position == 1) {
        return number % 10;
    }
    return digit(number / 10, --position);
}

注意:这段代码有点简单,并且不处理无效的输入。非正数position会将这段代码发送到无限递归中。

答案 1 :(得分:-1)

int digit(int number,int position){
        if(position==1) return number%10;
      return digit(number/10,--position);
   }