C语言回顾(3)

本文深入讲解C语言中的函数概念,包括函数定义、调用、参数传递及递归应用。通过实例演示如何使用函数提高代码可读性和维护性,以及如何通过递归解决复杂问题。

函数
函数是C语言中非常重要的一部分,当你编写的代码过多时,会给观看者很大的压力,因为大量的代码全部放在main函数里,会使得程序的可读性大大降低,如果要修改程序,也会非常困难;因此,便存在了函数,使用函数可以使程序可读性大大上升,还可以是其调理更加简洁,有时还可以大幅度缩减代码量,为程序员和观看者创造了优利的条件。
构建函数时,首先要定义函数,从函数的类型,名称,参数,都要定义;其中main()被称为主函数,其他函数被称为子函数;如果子函数在main()函数之前,将不用在main()函数中定义;但如果在main()函数之后,则需要在main()函数中定义;或者直接将子函数定义为全局变量;这样,就可以再main()函数中使用所定义的子函数了;子函数不能调用main()函数。

    #include<stdio.h>
    #include<windows.h>
    int main()
    {
         int a=5,b=9,c=3,n,m;
         int Max(int i,int j);
         n=Max(a,b);
         m=Max(n,c);
         printf("Max=%d\n",m);
         system("pause");
         return 0;
    }
   int Max(int i,int j)
   {
        if(i>j)
        return i;
        else
        return j;
   }

在这里插入图片描述

上述程序定义了Num函数比较大小,并返回最大值,连续两次调用Num函数,找出了a,b,c中最大的数,Max=9。

函数中一切计算改变的都是形参,如果想改变main()函数中的实参,就必须将实参的地址代入新建函数中,使之直接改变实参。

#include<stdio.h>
#include<windows.h>
int main()
{
      int a=1,b=10;
      int move1(int a,int b);
      int move2(int a,int b);
      move1(a,b);
      printf("a=%5d b=%5d\n",a,b);
      move2(a,b);
      printf("a=%5d b=%5d\n",a,b);
      system("pause");
      return 0;
}
int move1(int a,int b)
{
     int t;
     t=a;
     a=b;
     b=t;
     return 0;
}
int move2(int &a,int &b)
{
    int t;
    t=a;
    a=b;
    b=t;
    return 0;
}

在这里插入图片描述
上述函数为交换a,b,的值,在经过move1函数后,a,b并没有交换,而在经过move2函数后,a,b交换了值;前者交换的是形参,实参并没有改变,而后者直接改变了实参,所以a,b的值交换了。
递归
递归是函数不断自我调用的一种方法,直到条件不满足时,并将返回值一次次返回给所调用的上一层函数,追后返回给main()函数;它可以轻松的解决一些特殊的问题,如:汉诺塔,八皇后等。

#include<stdio.h>
#include<windows.h>
int main()
{
    int  a,b;
    int dg(int a);
    scanf_s("%d",&a);
    dg(a);
    printf("%d的阶乘是%d\n",a,dg(a));
    system("pause");
    return 0;
}
int dg(int a)
{
    if(a==1||a==0)
    return 1;
    else
    return dg(a-1)*a;
}

在这里插入图片描述
上述函数可以输出a的阶乘,输入a,不断调用dg函数,使之达成所求数的阶乘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值