函数digit(n, k)的功能是:求正整数n中从右端开始的第k(≥1)个数字的值(k从1开始),如果k超过了n的位数,则函数返回 - 1;否则返回n中第k个数字。
例如:digit(114514, 3) = 5 digit(114514, 99) = -1
要求:分别用递归和非递归设计该函数。
//函数digit(n, k)的功能是:求正整数n中从右端开始的第k(≥1)个数字的值(k从1开始),如果k超过了n的位数,则函数返回 - 1;否则返回n中第k个数字。
//例如:digit(264639, 3) = 5 digit(7622, 5) = -1
//要求分别用递归和非递归设计该函数。
//非递归方法:
#include<stdio.h>
//
int digitA(int n, int k) //n是数字 k是位数
{
int count=0,copy=n,i;
while (copy%10)
{
copy = copy / 10;
count++;
}
if (count < k)
return -1;
else
{
while (--k)
{
n = n / 10;
}
return (n % 10);
}
}
// 递归方法:
int digitB(int n, int k)
{
int count;
if (n == 0)
return -1;
if (k > 1)
{
n = n / 10;
return digitB(n, k - 1);
}
else
return (n % 10);
}
int main()
{
int n, k,a;
scanf("%d", &n);
scanf("%d", &k);
a = digitA(n, k);
printf("%d\n", a);
a = digitB(n, k);
printf("%d\n", a);
return 0;
}
代码运行图:


这篇博客展示了如何使用递归和非递归方法实现一个名为digit的函数,该函数从正整数n的右端开始,返回第k个数字的值。如果k超过n的位数,函数返回-1。提供的代码示例分别展示了两种方法的实现,通过输入示例可以验证其正确性。


被折叠的 条评论
为什么被折叠?



