函数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){}
我知道这个问题已经被提出了,但是我真的很难使它递归。 感谢您的关注。
答案 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);
}