鱼C论坛

 找回密码
 立即注册
查看: 1730|回复: 3

[已解决]求助大神们

[复制链接]
发表于 2017-2-23 18:13:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
long fun(int g)
{

  switch(g)
     {case 0:return 0;

          case 1:
          case 2:return 1;
     }
  return (fun(g-1)+fun(g-2));
}
main()
{
  long fib; int n;
  printf("Input n:");scanf("%d",&n);printf("n=%d\n",n);
  fib=fun(n);
  printf("fib=%d\n\n",fib);
}
请问大神们此处的switch语句有什么用?我知道switch语句的定义,但是不知道在此处如何起到作用?特别是这句话return (fun(g-1)+fun(g-2));
最佳答案
2017-3-6 16:59:57
首先这里fib应该是指Fibonacci即斐波那契数列,指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。(这里都是我百度的哈哈)
下面是我的理解:你这个函数应该是实现:输入n,然后将第n个fib数列中的数输出出来。
首先第一个问题是这里switch的作用:这里的作用就和楼上说的一样,当g是0时函数返回值为0,当g为1或2时函数返回值为1,当g>2时,函数返回fun(g-1)+fun(g-2)。
第二个问题是fun(g-1)+fun(g-2)的意思:如上,当g>2时,函数返回fun(g-1)+fun(g-2),这里给g赋个值就好说明了,当g=4时,函数返回fun(3)+fun(2),则fib=fun(3)+fun(2);到这里又将3和2分别代入函数fun(),则fun(4)=fun(3)+fun(2)=(fun(2)+fun(1)+1)+1=1+1+1=3。
楼主没看懂这个函数应该是函数的嵌套调用没弄明白,再看看书吧(c语言谭浩强版185页),,我也是新手,一起加油吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-23 22:31:25 | 显示全部楼层
迭代
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-25 13:29:40 | 显示全部楼层
这里的switch语句是当对应输入0-2,返回值相应的值,当输入为零返回0,当输入为1或2时,返回为1,当输入超过2,时,调用函数(fun(g-1)+fun(g-2))进行迭代。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-6 16:59:57 | 显示全部楼层    本楼为最佳答案   
首先这里fib应该是指Fibonacci即斐波那契数列,指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........这个数列从第3项开始,每一项都等于前两项之和。(这里都是我百度的哈哈)
下面是我的理解:你这个函数应该是实现:输入n,然后将第n个fib数列中的数输出出来。
首先第一个问题是这里switch的作用:这里的作用就和楼上说的一样,当g是0时函数返回值为0,当g为1或2时函数返回值为1,当g>2时,函数返回fun(g-1)+fun(g-2)。
第二个问题是fun(g-1)+fun(g-2)的意思:如上,当g>2时,函数返回fun(g-1)+fun(g-2),这里给g赋个值就好说明了,当g=4时,函数返回fun(3)+fun(2),则fib=fun(3)+fun(2);到这里又将3和2分别代入函数fun(),则fun(4)=fun(3)+fun(2)=(fun(2)+fun(1)+1)+1=1+1+1=3。
楼主没看懂这个函数应该是函数的嵌套调用没弄明白,再看看书吧(c语言谭浩强版185页),,我也是新手,一起加油吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 00:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表