本来今天做了一天的实验,但为了自己的连续每天都写
所以,记录学习的第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!