今天是第四天:练习-函数-递归训练
大家好,我是C语言小白-Haven,今天吸取了下昨天和前天的经验,没有等到晚上才开始写博客。今天这篇博客是我用那种碎片时间写出来的,晚上有时间的话再改善一下。
说实话我寒假在培训机构学习也算是脱离了自己的舒适圈,这边给我的感觉就是直接把我的网给断了,睡觉的宿舍网速慢得要死,估计是有网络干扰屏蔽仪。在培训基地,网速上课的时候十几MB,休息的时候三四KB,还不让拿手机。宿舍也有很多问题。
但是我感觉学习的时候效率很高,脱离了手机、网络信息以及游戏,这种感觉好像高中学习的样子,但又没有高中的压力以及那么多的规矩。
总的来说:
寒假和暑假确实是提升自己最好的时机。希望你们在这个时间流逝飞快的假期能有自己的收获与提升。
题目:
利用函数递归
练习1:递归求阶乘
练习2:倒序打印字母
思维过程:
这种递归类型题目去设计函数,我主要遵循的是先写它的简单一点的解放在自己能看到的地方,然后再去写n与n-1的关系,然后再引用函数本身,最后去写递归到最后一步所要写的代码;
练习2:可以用递归一次输入一次,的方法输入,判断是否是‘回车’或者自己设一个特殊的值,如果不是就继续导入函数本身,递归之后,判断是那个特殊值就向后走输出当前输入的值;
我自己做的没多少新的思维方式,有兴趣的可以自己去写一下上面的那个想法,比我的简单多了。
/*
利用函数递归
练习1:递归求阶乘
练习2:倒序打印字母
*/
#include<stdio.h>
int factorial(int a);
char daoxu(char b[],int a);
int main ()
{
/******定义与输入模块*******/
int a=1;
printf("please input a data:");
scanf("%d",&a);
/*******导入阶乘函数*******/
printf("!%d ==",a);
a=factorial(a);
printf("== %d\n",a);
/******定义与输入模块*******/
printf("please input a data to the char:");
scanf("%d",&a);
char b[a];
int i;
printf("please input %d charact:\n",a-1);
for(i=0;i<a;i++)
{
scanf("%c",&b[i]);//可以换成b[i]=getchar();但由于char型只有一个字节所以不能打空格
//b[i]=getchar();
}
/*******导入倒序打印字母函数*******/
a--;
daoxu(b,a);
return 0;
}
int factorial(int a)//这是阶乘模块
{
if(a==1)
{
printf(" %d ",a);
return 1;
}
printf(" %d *",a);
return factorial(a-1)*a;
}
char daoxu(char b[],int a)//倒序打印字母
{
if(a==0)
{
printf("%c",b[a]);
return b[a];
}
printf("%c ",b[a]);
return daoxu(b,a-1);
}