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

递归:

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

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

<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 读入成功或个数返回的值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值