美文网首页
9.3 函数 :递归和倒序计算

9.3 函数 :递归和倒序计算

作者: 日常表白结衣 | 来源:发表于2017-07-11 15:06 被阅读0次

[题目]以二进制形式打印十进制整数(除2取余、逆序输出)
[递归]
在递归程序中,起初一直没有明白为什么是直接输出,自己理解成需要建立一个数组将取余后的结果保存,然后逆序输出,但是其实这样就是完全理解错误了递归算法。
递归最重要的一点就是倒序输出!
举个例子:假设有一条函数调用链---recursion1()调用recursion2()、recursion2()调用recursion3()、recursion3()调用recursion4()。当recursion4()执行结束(条件不满足继续调用)时,控制转回recursion3();当recursion3()结束时,控制转回recursion2();当recursion2()结束时,控制转回recursion1(),这就是递归,不过在递归中所有的函数都是recursion()。
同时,在整个执行过程中,每级函数都有自己的变量,它们使用同一个变量名,但是对应于不同的数值,因此每一级程序返回时,都是不同的数值。
示例程序:

/* 以二进制形式打印整数 */
#include<stdio.h>
void to_binary(unsigned long n);
int main()
{
    unsigned long number;
    printf("please enter an integer (q to quit ):\n");
    while (scanf("%lu", &number) == 1)
    {
        printf("binary equivalent: ");
        to_binary(number);
        putchar('\n');
        printf("please enter an integer (q to quit ):\n");
    }
    printf("done.\n");
    return 0;
}
void to_binary(unsigned long n) //递归
{
    int r;
    r = n % 2;
    if (n >= 2)
    {
        to_binary(n / 2);
    }
    else;
    printf("%d", r);
    //putchar(r == 0 ? '0' : '1'); 占内存较多
}

相关文章

  • 9.3 函数 :递归和倒序计算

    [题目]以二进制形式打印十进制整数(除2取余、逆序输出)[递归]在递归程序中,起初一直没有明白为什么是直接输出,自...

  • 习题26-29

    使用递归法计算5!(阶乘) 利用递归函数调用方式,将所输入的字符以倒序打印出来。 有5个人坐在一起,问第五个人多少...

  • 2018-07-28

    递归函数以及尾递归优化: #利用递归函数计算阶乘 ... #N! = 1 * 2 * 3 * 4 * ... * ...

  • (一)递归

    递归是函数对自己的调用,递归一定有一个退出条件,不然会陷入死循环。 看一个最简单的例子,要求倒序输...

  • 前端算法学习-前篇

    递归 JavaScript中允许函数递归调用,示例: 当一个函数呗递归调用时,递归没有完成,函数的计算结果会被暂时...

  • 05-scala入门-递归函数

    以一个例子来举例说明递归函数:使用递归函数计算阶乘

  • 2018-10-08

    递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 ?: 计算阶乘 n...

  • 树的遍历,golang实现

    先序,递归 中序,递归 后序,递归 先序,非递归 中序,非递归 后序,非递归 层序遍历

  • 根据两个traversal恢复二叉树

    已知前序和中序遍历: 递归版本: 非递归版本: 已知后序和中序遍历:非递归:

  • 关于递归函数举例

    递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。计算阶乘n! = 1...

网友评论

      本文标题:9.3 函数 :递归和倒序计算

      本文链接:https://www.haomeiwen.com/subject/xdhmhxtx.html