[关闭]
@okokme 2018-06-25T04:46:59.000000Z 字数 1110 阅读 404

6.14学习心得

c语言


递归函数的应用:可以用来使数字逆序。 如求一个数的二进制数(或者别的什么八进制,总之用到这种的),反复那么取余最后得到数需要逆序,就可以用递归进行计算直接输出。

举个例子吧

//把一个整数从二进制形式转化为可打印的字符形式。 (如果在printf函数中使用了%d格式码,它就会进行这类处理)

/*
**接受一个整形值(无符号),把它转化为字符并打印它,前导零被删除
*/
#include<stdio.h>
void binary_to_ascii(unsigned int vale)
{
    unsigned int qotient;
    qotient = vale/10;
    if(qotient != 0)
    binary_to_ascii(qotient);
    putchar(vale%10+'0'); //将整形常量化成字符常量 可以采用 +‘0’的形式  0+‘0’=‘0’,1+‘0’=‘1’,2+‘0’=‘2’

}
递归函数调用每次都产生新的一批变量

注意:不是所有函数都用递归比较好,有时候用迭代法好于递归,因为不必要的递归浪费资源。比如菲波那棋数列,使用迭代法好于递归,递归的冗余计算过于多。

long Fibonacci(int n)
{
    long result;
    long previous_result;
    long next_older_result;
    result = prvious_result = 1;

    while(n>2)
    {
        next_older_result = previous_result;
        previous_result = result;
        result = previous_result + next_older_result;
    }
    if(n<=2)
    result 1;

    return result;
}

tar: /etc/ufw/before.rules:无法 open: 权限不够
tar: /etc/ufw/after6.rules:无法 open: 权限不够
tar: /etc/ufw/user.rules:无法 open: 权限不够
tar: /etc/ufw/user6.rules:无法 open: 权限不够
/etc/ufw/applications.d/
/etc/ufw/applications.d/cups
/etc/ufw/sysctl.conf
tar: /etc/ufw/after.init:无法 open: 权限不够
tar: /etc/ufw/before.init:无法 open: 权限不够
tar: /etc/ufw/after.rules:无法 open: 权限不够
tar: /etc/ufw/before6.rules:无法 open: 权限不够
/etc/ufw/ufw.conf
/etc/tmpfiles

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注