您的位置:首页 > 其它

第九章 函数(递归)总结 140514

2014-05-14 23:47 127 查看
递归:

      函数调用 其本身叫递归。他有时可以代替循环。

这一节可能有点难懂,因为比较的抽像,但是理解了也就不是什么难的。

<span style="font-size:14px;">// 9.6.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
void <span style="color:#ff0000;">up_and_dow</span> (int n);

int _tmain(int argc, _TCHAR* argv[])
{<span style="color:#000000;">
</span>	<span style="color:#ff0000;">up_and_dow  (1);
</span>	getchar ();
return 0;
}

void up_and_dow (int n)
{

printf ("Level %d: n location %p \n", n, &n);    // n == 1
if (n < 4)
<span style="color:#ff0000;">up_and_dow (n + 1);</span>
printf ("LEVEL %d : n location %p \n", n , &n);   // n == 2
}
</span>

这问题我也想了比较久,问题主要是卡在输出“LEVEL 4: n location 0x0012ff24”后。这里需要注意两个问题:第一个是  n 这个变量的值(每一级递归 都是使用它自己私有的变量n,也就是说n的值在每一级递归的值都是不相同的)。第二个是,函数在被调用后控制权会交给调用它的函数

把函数原型 和常量定义放在一个头文件中好处:可以减少键入代码的时间,和维护时间   用#include "文件名.h"

不在同一文件的函数编译

在vs 右边的源代码右击新建,要编译的代码或头文件,但是点调试时还是要在有main ()函数中点的。因为C总是从main()函数开始执行的。

scanf ("%*s");读入一个字符串 以空格结束 -->解释了为什么"来跳至下一空白字符"....* 是scanf函数中的一种修饰符          .... 表示输入项输入后不转送给任何向量 

星号*的作用就是表示读入字符串的宽度 

status = scanf("%d", &code)) != 1 scanf()返回的是成功读入的值的个数,如果你输入整数那么scanf成功读到1个整数返回1,否则返回0。而不是把code 的值赋给status 而是scanf 读入成功或个数返回的值


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 c