读程序写出程序执行结果 #include <stdio.h> int fib(int g) { switch(g) case 1: case 2: return 1; } ret

读程序写出程序执行结果 #include <stdio.h> int fib(int g) { switch(g) case 1: case 2: return 1; } ret,第1张

#include<stdioh>

#include<stringh>

#include<stdlibh>

int fib(int g)

{ switch(g)

case 1:

case 2: return 1;

return -1;

}

int main()

{

printf("%d\n", fib(5));

system("pause");

return 0;

}

这样的话很明显是-1,因为你传入5,不属于switch当中的0或1,所以只会回传-1,最后印出-1

……

通常的教材上讲到递归时,引用“斐波那契数列”的例子,其实我感觉这是一个误导。“斐波那契数列”的递归解决是效率最低的。

递归版

//打印斐波那契数列的前10项

#include <stdioh>

#define MAX 10

int fib(int n);

int main(){

int i;

printf("斐波那契数列的前10项是:\n");

for(i=1;i<=MAX;i++){

printf("%d\t",fib(i));

}

return 0;

}

int fib(int n){

return n<31:(fib(n-1)+fib(n-2));

}

迭代版

//打印斐波那契数列的前10项

#include <stdioh>

#define MAX 9

int main(){

int fib[MAX],i=2;

fib[0]=fib[1]=1;

printf("斐波那契数列的前10项是:\n%d\t%d\t",fib[0],fib[1]);

while(i<10){

fib[i]=fib[i-1]+fib[i-2];

printf("%d\t",fib[i]);

i++;

}

return 0;

}

你的程序写错了,return(fib(n-1)+fib(n-2)忘记了一个),改为return(fib(n-1)+fib(n-2)),程序就没错误了。

程序的运行结果为:16

代码解释如下:

fib()函数是个递归函数,实现如下功能:当参数n>2时,将n赋值为n-1,和n-2返回,直到n<=2停止,像主函数里面的fib(6),先返回fib(5)+fib(4);然后继续执行fib()函数,fib(4)+fib(3)+fib(3)+2;然后继续执行fib()函数返回fib(3)+2+2+2+2+2+2,然后继续执行fib()函数返回:{2+2+2}+2+2+2+2+2,然后结束将结果输出。

#include<stdioh>

main()

{

int fib[20]={1,1};

int i;

for(i=2;i<20;i++)

//

fib[i]=fib[i-1]+fib[i-2];//改括号

for(i=0;i<20;i++)

//

printf("%6d",fib[i]);//加双引号

printf("\n");

}

以上就是关于读程序写出程序执行结果 #include <stdio.h> int fib(int g) { switch(g) case 1: case 2: return 1; } ret全部的内容,包括:读程序写出程序执行结果 #include <stdio.h> int fib(int g) { switch(g) case 1: case 2: return 1; } ret、编写一个C程序,用于打印斐波那契数列的前10个数、有以下C语言程序,程序的输出结果是什么请写出详细的执行过程。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9492799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存