C语言基础学习函数2

函数的思想:拆

把各个功能拆开,把大问题化解为小问题。

栈:先进后出。

堆:

 1. 空间很大

 2. 手动申请,手动释放

汉诺塔的递归思想

#include <stdio.h>

void move(int n ,int pole1,int pole2)

{

    static int step = 1;

    printf("%03d:[disk %d] : %c --> %c\n",step++,n,pole1,pole2);

}

                 //璧峰鏌? 杈呭姪鏌?   鐩爣鏌?void hanoi(int n, int   A, int   B,  int    C)

{

    if (1==n)

    {

       move(n,A,C);

    }else

    {

       hanoi(n-1,A,C,B);//n-1 鍏堟尓璧?      puts("-------");

       move(n,A,C); // 灏嗙n涓?鎸埌 鐩爣鏌?

       puts("-------");

       hanoi(n-1,B,A,C);

    }

}

//n = 3;

//hanoi(2,'A','C','B')

//     | --------------------> hanoi(1,'A','B','C')

//                             move(2,'A','B');          [2:A->B]

//                                |----------------------->move(1,'A','C') [1:A->C]

//move(3,'A','C');   -----> [3:A->C]

//hanoi(2,'B','A','C');

int main(void)

{

    int n = 0;

    printf("Input numbers of disk: ");

    scanf("%d",&n);

    hanoi(n,'A','B','C');

   

    return 0;

}

//情况1

数组元素作为函数参数

注意:

  //1.数组元素的类型 是否 与形参类型一致

//情况2

想把整个数组传入到函数中

//形参 和 实参 规则

1.个数相同

2.类型匹配

3.一一对应

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值