分别设计循环算法和递归算法,将任意输入的十进制正整数n转换为二进制数并输出。用javascript
时间: 2024-09-20 09:09:12 浏览: 52
**循环算法(迭代法)**:
```javascript
function decimalToBinaryIterative(n) {
let binary = '';
while (n > 0) {
binary = (n % 2) + binary;
n = Math.floor(n / 2);
}
return binary;
}
console.log(decimalToBinaryIterative(10)); // 输出 "1010"
```
**递归算法**:
```javascript
function decimalToBinaryRecursive(n, prefix = '') {
if (n === 0) {
return prefix;
} else {
return decimalToBinaryRecursive(n / 2, prefix + (n % 2));
}
}
console.log(decimalToBinaryRecursive(10)); // 输出 "1010"
```
这两个函数都可以将给定的十进制正整数 `n` 转换为二进制表示。第一个函数是循环版本,通过不断取余数和除以2来得到每一位的二进制数;第二个函数是递归版本,每次调用自身处理 n 的一半,同时累积每一位的二进制值。
相关问题
分别设计循环算法和递归算法,将任意输入的十进制正整数n转换为二进制数并输出。
循环算法通常用于这种类型的问题,因为它通过迭代的方式逐步完成转换过程,这里是一个简单的Python示例:
```python
def decimal_to_binary_loop(n):
binary = ''
while n > 0:
binary = str(n % 2) + binary
n = n // 2
return binary
# 示例
decimal_number = int(input("请输入一个十进制正整数: "))
binary_result = decimal_to_binary_loop(decimal_number)
print(f"{decimal_number}转为二进制为: {binary_result}")
```
递归算法则依赖于函数自身调用自身,直到达到基本情况为止,这里是递归版本:
```python
def decimal_to_binary_recursive(n, binary=''):
if n == 0:
return binary
else:
return decimal_to_binary_recursive(n // 2, binary + str(n % 2))
# 示例
decimal_number = int(input("请输入一个十进制正整数: "))
binary_result = decimal_to_binary_recursive(decimal_number)
print(f"{decimal_number}转为二进制为: {binary_result}")
```
利用C++设计将十进制正整数n转换为二进制数的迭代算法和递归算法。
在C++中,我们可以使用迭代和递归两种常见的算法来将十进制正整数n转换为二进制字符串。
**迭代算法:**
```cpp
#include <iostream>
#include <string>
std::string decimalToBinary(int n) {
std::string binary = "";
while (n > 0) {
binary = (n % 2) + binary;
n /= 2;
}
return binary;
}
int main() {
int num = 42; // 示例输入
std::cout << "Binary representation of " << num << " is: " << decimalToBinary(num) << std::endl;
return 0;
}
```
在这个迭代过程中,我们不断取余数并将其添加到结果字符串的开头,然后除以2更新n值,直到n变为0。
**递归算法:**
```cpp
#include <iostream>
#include <string>
std::string decimalToBinaryRecursion(int n, std::string binary = "") {
if (n == 0)
return binary;
else
return decimalToBinaryRecursion(n / 2, binary + std::to_string(n % 2));
}
int main() {
int num = 42;
std::cout << "Binary representation of " << num << " is: " << decimalToBinaryRecursion(num) << std::endl;
return 0;
}
```
递归版本则是通过不断调用自身,每次处理n除以2的余数,并将当前余数添加到结果字符串的末尾,直到n减小到0。
阅读全文