递归功能会反向打印

Does recursive function print in reverse?

本文关键字:打印 功能 递归      更新时间:2023-10-16
#include <iostream>
using namespace std;
void convertToBinary(unsigned int n)
{
    if (n>0)
    {
        convertToBinary(n / 2);
        cout << n % 2;
    }
}
int main(){
    unsigned int n;
    cin >> n;
    convertToBinary(n);
}

这是一个函数递归,从十进制到二进制,例如,如果我给出此函数n等于 10,则输出为 1010,如何在最右边的数字呢?它将是0,因为10%2 = 0,然后打印0,因此预期的输出将为101,因为有 0

递归调用使用的数据结构称为堆栈。它的工作原理是最终的。因此,直到您的基本条件(即满足(n > 0)(时,convertToBinary在打印n%2本身之前重新呼叫。当无法满足基本条件时,convertToBinary由于堆栈结构而开始反向打印二进制值。