一步一步写算法(之爬楼梯)

一步一步写算法(之爬楼梯)

ID:15396991

大小:43.50 KB

页数:3页

时间:2018-08-03

一步一步写算法(之爬楼梯)_第1页
一步一步写算法(之爬楼梯)_第2页
一步一步写算法(之爬楼梯)_第3页
资源描述:

《一步一步写算法(之爬楼梯)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一步一步写算法(之爬楼梯)【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing@163.com】   前两天上网的时候看到一个特别有意思的题目,在这里和朋友们分享一下:   有一个人准备开始爬楼梯,假设楼梯有n个,这个人只允许一次爬一个楼梯或者一次爬两个楼梯,请问有多少种爬法?   在揭晓答案之前,朋友们可以自己先考虑一下:   这个人爬n层楼梯,那么它也不是一下子就可以爬这么高的,他只有两个选择,要么从n-2层爬过来,要么从n-1层爬过来。除此之外,他没有别的选择。此时相信朋友其

2、实已经早看出来了,这就是一道基本的递归题目。   (1)首先我们建立一个函数,判断函数的合法性[cpp] viewplaincopy1.void jump_ladder(int layer, int* stack, int* top)  2.{  3.    if(layer <= 0)  4.        return;  5.  6.    return;  7.}     (2)判断当前的层数是为1或者是否为2[cpp] viewplaincopy1.void jump_ladder(int laye

3、r, int* stack, int* top)  2.{  3.    if(layer <= 0)  4.        return;  5.  6.    if(layer == 1){  7.        printf_layer_one(layer, stack, top);  8.        return;  9.    }  10.      11.    if(layer == 2){  12.        printf_layer_two(layer, stack, top);  

4、13.        return;  14.    }  15.  16.    return;  17.}     (3)对于2中提及的打印函数进行设计,代码补全[cpp] viewplaincopy1.#define GENERAL_PRINT_MESSAGE(x)  2.    do {  3.        printf(#x);  4.        for(index = (*top) - 1 ; index >= 0; index --)  5.            printf("

5、%d", stack[index]);  6.        printf("");  7.    }while(0)  8.  9.void printf_layer_one(int layer, int* stack, int* top)  10.{  11.    int index ;  12.    GENERAL_PRINT_MESSAGE(1);  13.}  14.  15.void printf_layer_two(int layer, int* stack, int* top)  

6、16.{  17.    int index;  18.      19.    GENERAL_PRINT_MESSAGE(11);  20.    GENERAL_PRINT_MESSAGE(2);  21.}     注:a)代码中我们使用了宏,注意这是一个do{}while(0)的结构,同时我们对x进行了字符串强转       b)当剩下台阶为2的时候,此时有两种情形,要么一次跳完;要么分两次    (4)当阶梯不为1或者2的时候,此时需要递归处理[cpp] viewplaincopy1.void _

7、jump_ladder(int layer, int* stack, int* top, int decrease)  2.{  3.    stack[(*top)++] = decrease;  4.    jump_ladder(layer, stack, top);  5.    stack[--(*top)] = 0;  6.}   7.  8.void jump_ladder(int layer, int* stack, int* top)  9.{  10.    if(layer <= 0) 

8、 11.        return;  12.  13.    if(layer == 1){  14.        printf_layer_one(layer, stack, top);  15.        return;  16.    }  17.  1.    if(layer == 2){  2.        printf_layer_two(layer, stack, top

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。