今日学习了函数的递归,递归指的是函数重复引用自身,为了避免栈溢出,应设置合适的限制条件。下面将今天做的练习进行整理:
练习1:接收一个整型值,按照顺序打印他的每一位
#include<stdio.h>
int print(int num)
{
if(num>9)
{
print(n/10);
}
printf("%d",n%10);
}
int main()
{
int num=0;
scanf("%d",&num);
print(num);
return 0;
}
练习2:不允许创建临时变量,编写函数,求字符串长度
//创建临时变量
#include<stdio.h>
int my_strlen(char*str)
{
int count=0;
for(int count=0;str!='\0';str++;;)
count++;
return count;
}
int main()
{
char arr[]="bit";
int len=my_strlen(arr);
printf("%d\n",len)
return 0;
}
//不创建临时变量
int my_strlen(char*str)
{
if(str!='\0')
{
return 1+my_strlen(str+1);
}
else
return 0;
}
int main()
{
char arr[]="bit";
int len=my_strlen(arr);
printf("%d\n",len)
return 0;
}
练习3:求n的阶乘
//循环的方法
#include<stdio.h>
int fac1(int n);
{
int i=0;
int ret=1;
for(i=1;i<=n,i++)
{
ret*=i;
}
return ret;
}
//递归的方法
int fac1(int n);
{
if(n<=1)
return 1;
else
return n*fac1(n-1);
}
int main()
{
int n=0;
int ret=0;
scanf("d%",&n);
ret=fac1(n);
printf("d%",ret);
return 0;
}
以上就是今日所学的递归及所做的练习,下面讲述一下数据结构中相关知识。
1.什么是线性表?
答:线性表是相同特性数据元素的一个有限序列。
2.线性表有什么逻辑特征?
答:在非空的线性表中,有且只有一个开始节点,它没有直接前趋,且仅有以及直接后继;尤其只有一个终端节点,该节点没有直接后继,且有且只有一个直接前趋;内部的节点有有且仅有一个直接前趋和一个直接后继。
3.案例
如果将稀疏多项式全部写出来会造成严重的空间浪费,例如,若将每一项都列出,将会造成空间的浪费。
例如......