6-3 自然数的位数(递归版) (10分)
请编写函数,求自然数的位数。
函数原型
int NumDigit(int number);
说明:参数 number 为非负整数。函数值为 number 的位数。若 number 为零,则函数值为零。
裁判程序
#include <stdio.h>
int NumDigit(int number);
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", NumDigit(n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
测试数据
| 输入样例 | 输出样例 |
|---|---|
| 0 | 0 |
| 8 | 1 |
| 35184 | 5 |
| 2039476518 | 10 |
要求:不得使用循环语句。
int NumDigit(int number)
{
if(number==0)
{
return 0;
}
else if(number/10==0)
{
return 1;
}
else
{
return NumDigit(number/10)+1;
}
}
本文介绍了一种使用递归算法求解自然数位数的方法,通过递归调用自身函数实现对数字的逐位计数,避免了循环语句的使用,展示了递归在解决特定数学问题上的优雅与效率。
1180

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



