标签:产生 技巧 语言 类型 bsp 功能 入参 没有 turn
第36课 - 函数递归与函数设计技巧
一. 递归
(1) 递归是数学领域中的概念在程序设计中的应用。
(2) 递归是一种强有力的程序设计的方法。
(3) 递归的本质为函数内部在适当的时候调用自身。
(1)递归点:以不同参数调用自身。
(2)出口:不在递归调用
下面就是求一个数的阶乘的函数:
#include <stdio.h>
int func(int x)
{
if( x > 1 )
{
return x * func(x - 1); //递归点
}
else
{
return 1; //出口
}
}
int main()
{
printf("x! = %d\n", func(4));
return 0;
}
运行结果:4!= 24
虽说调用了一次,却创建了4次活动记录。所以说我们的递归函数不能递归太多的层次。
小结:
C语言中的递归函数必然会使用判断语句。
递归函数在需要编写的时候定义函数的出口,否则栈会溢出。
递归函数是一种分而治之的思想。
思考题:编写一个函数打印一个字符数组的全排列。
void Permutation(char *pStr,char *pBegin)
{
assert(pStr&&pBegin);
if(*pBegin == ‘\0‘)
printf("%s\n",pStr);
else
{
for(char *pCh=pBegin; *pCh !=‘\0‘; pCh++)
{
char temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
Permutation(pStr, pBegin+1);
temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
}
}
}
二. 函数的设计技巧
void str_copy(char *str1, char *str2);
void str_copy(char *str_dest, char *str_src);
void str_copy(char *str_dest, const char *str_src);
char s[64];
int len = strlen(strcpy(s,”android”));
char c;
c = getchar(); //getchar的返回值是int不是char。
if(EOF==c) //会出错,永远不会进入。
{ //... }
标签:产生 技巧 语言 类型 bsp 功能 入参 没有 turn
原文地址:https://www.cnblogs.com/free-1122/p/9826649.html