简单的 递归方法和循环方法的比较(C语言)

本来今天做了一天的实验,但为了自己的连续每天都写
所以,记录学习的第15天
在这里插入图片描述
今天在blink看到的一道基础题
正好也是为了给这位同学和刚学习C语言的同学说一下,所以写了今天的博客
这很基础很基础,所以只是对初学者有一些帮助
看题
在这里插入图片描述
一看到这道题,我们脑海中会出现两种解决办法,
一种是递归,一种是循环
在这里插入图片描述
1、
我们先来说下循环的解决办法
我会写出两种循环(for循环和while循环)

虽然这个表达式很长,但你会发现,其实他每次求得只都是下面那一句
1+1/x;
只不过求完一次就把x的值更新为1+1/x;
然后再1+1/x;
那我们就可以先写一个函数

float fx(float x){
return 1+1/x;
}

函数出来了,很简单吧,每次调用都返回1+1/x;
之后我们要按题目要求,循环3次;
在主函数里调用

int main(){
float x;
x=5.0;
int i;
for(i=0;i<3;i++){
    x=fx(x);
}
printf("%f",x);

记住由于函数返回值不是整数,所以用float类型;
然后我们再试一下while循环

#include <stdio.h>
float  fx(float x);
int main(){
int i=3;
float x=5.0;
while(i){
    x=fx(x);
    i--;
}
printf("%f",x);
}

float fx(float x){
return 1+1/x;
}

道理也是一样的,循环三次;

这里有一个细节可能不太好理解,while(i);
这里只有当i不是0的时候循环能进行,可以理解成一个bull型;
很简单吧
在这里插入图片描述

下面用递归的方式来把代码写出来;
还是一个道理,执行三次!
我们先定义个索引i为全局变量

int i=3;

然后写函数;

float fx(float x){
x=1+1/x;
if(i>1){
i--;
x=fx(x);

}

return x;

}

这里就用到了递归,用i这个索引每次减1来执行三次递归调用;
最后我们在主函数里测试

int main(){
float x=5.0;
printf("%f",fx(x));
return 0;
}

结论也是正确的方法;
在这里插入图片描述

好了,这就是这两种方法(其实是三种),当然可能会有更简单的办法,但我只是把这两种方法写出来便于同学理解

最后再给刚才让我帮他把这道题的代码写出来的同学点鼓励,C语言虽然都说很难,但其实只是我们下的功夫太少了,只是学习基础语法除了指针其实不会很难,当然这个东西入门可能的确不容易,说实在的,我到现在大三了,大一上学期的C语言我还挂着呢哈,我是这个疫情在家把C语言给学了,也是看了很多书,和网上的视频,才对它掌握了基本的使用;所以别放弃啊,要加油!

然后再说在csdn上发出你的问题这点不要放弃,虽然有时候可能不会有人给你解答,但可能人家只是很忙,如果有时间的话,大家肯定还是愿意帮助你的,我也是在忙完之后看到你的消息,写了这篇博客来给你解答,所以,加油!

在这里插入图片描述
今天,结束,晚安!
end!

猜你喜欢

转载自blog.csdn.net/weixin_46726346/article/details/106106572