实现递归、迭代和遍历的C语言
最编程
2024-08-12 10:02:54
...
2021/07/13
阶乘的实现(感受:递归、迭代、遍历的思想)
参考网上的一篇文章:递归与迭代的区别 (画的图讲的逻辑还是挺清晰的)
循环遍历,递归,迭代
自己学习C时的一点感悟代码(2021/07/13--a):
#include <stdio.h> //c-头文件库标准库IO引用
#include <stdlib.h>
//=======================================================
//声明定义区
int function1 (int*,int); //递归
int function2 (int*,int); //迭代
int function3 (int*,int); //循环遍历
//=======================================================
//main()主函数区
int main(void){
int numb=4;
int sum=0;
for (int i=1;i<=numb;i++){ //阶乘的循环遍历实现
sum=function3(&sum,i); //调用遍历的计算函数 //sum=(i==1&&*sum==0)?i:(*sum)*i;
}
sum=0;
printf ("\n%d %d",sum*numb,function1(&sum,numb)); //先递归到里层,从里层往浅层返回计算
sum=0;
printf ("\n%d %d",sum,function2(&sum,numb)); //从浅层往里层计算,并递归到里层 ,最里层返回结果
sum=0;
}
//=======================================================
//构造函数定义区 :
int function3 (int *value,int i){ //循环遍历时的计算函数
return (i==1&&*value==0)?i:(*value)*i;
}
int function2 (int *value,int i){ //从浅层往里层计算并返回 ,【迭代】
if(*value==0){ //递归开始阶段
*value=1*i;
return function2(value,i-1);
}else if(i!=1){ //计算,并往里层递归
*value=(*value)*i;
return function2(value,i-1);
}else if(i==1){ //最里层时,返回之前计算结果值 到最浅层
return (*value)*1;
}else{ //异常返回
return -1;
}
}
int function1 (int *value,int i){ //从里层往浅层,返回计算 【递归】
if(i==1){ //递归到最里层时,返回1准备计算
if(*value==0)return 1;
else return -1;
}else{
*value=function1(value,i-1); //先开始递归
return (*value)*i; //开始计算并返回
}
}
上一篇: C语言中递归函数的应用
下一篇: 深入剖析C语言中的递归机制