编写一个函数求某个正整数n是几位数,其中n从键盘输入。要求分别用递归函数与非递归函数实现。用c++
时间: 2024-12-02 12:16:41 浏览: 55
在C++中,你可以使用递归和非递归的方式编写一个函数来计算给定正整数n的位数。下面是两个版本的示例:
**递归函数实现:**
```cpp
#include <iostream>
using namespace std;
int digitCountRecursion(int n) {
if (n == 0) // 当n为0时,返回1(因为0本身占一位)
return 1;
else
return 1 + digitCountRecursion(n / 10); // 如果n大于0,加1并递归处理除10后的数字
}
int main() {
int num;
cout << "请输入一个正整数: ";
cin >> num;
int digits = digitCountRecursion(num);
cout << "该数有 " << digits << " 位.\n";
return 0;
}
```
**非递归函数实现:**
```cpp
#include <iostream>
using namespace std;
int digitCountIterative(int n) {
int count = 0;
while (n > 0) {
count++;
n /= 10; // 每次循环将n除以10,直到变成0
}
return count;
}
int main() {
int num;
cout << "请输入一个正整数: ";
cin >> num;
int digits = digitCountIterative(num);
cout << "该数有 " << digits << " 位.\n";
return 0;
}
```
这两个函数都能计算出用户输入正整数的位数,递归版本通过不断拆分直到零来计数,而非递归版本则是通过迭代实现。
阅读全文
相关推荐


















