今天从函数递归开始写起,是C语言函数部分的最终版1.0,日后随时进行修改,完善,补充。
-
函数递归
1.一个函数自己调用自己称为递归
2.它通常把一个大型复杂的问题层层转化为与原问题相似规模较小的问题
3.用少量的代码去描述多次复杂的计算
4.主要思考方式为:大事化小
说白了递归就是一个函数中可以再次调用自己已达到重复地计算等效果,并且其常见的错误就是出现栈溢出(stack overflow)
有个小练习来说明递归的应用即:创建一个函数来求字符串长度(不使用临时变量)
其函数部分:int my_strlen(char* str)
{
if( *str! = “\0”)
return 1+my_strlen(str+1);
else
return 0;
} -
递归和迭代
小练习:求斐波那契数列中的第n个数即1.1.2.3.5.8.13.21.35.55…
当求斐波那契数列时再使用递归即
Fib(n)=(n<=2,1) (n>2,Fib(n-1)+Fib(n-2))当使用此种方式递归的话,当计算50或更多的斐波那契数列的数时是十分复杂的,因为在计算时重复的数字使用的太多,导致效率很低,所以这种是无法使用递归来解决的,这时候使用迭代的方式就显得十分聪明和巧妙
即函数是:int Fib (int n)
{ int a = 1;
int b = 1;
int c = 1;
while(n>2)
{ c=a+b;
a=b;
b=c;
n–;
}
return c;
} -
随时更新补充!!!!!!!!!!!!!!!!!!!!!!!!!!
-
孙浩小笔记
-
要关于汉诺塔问题与青蛙跳台阶问题和《剑指offor》写三篇专门的博客!!!