[求助]来帮下忙
我有道作业不懂做.请大虾帮帮手!题目:
从键盘上输入一个整数n,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如0 1 1 2 3 5 8 13 ……
有道C的样本。。。但不懂怎样修改成C#的!·。
#include <stdio.h>
int fun(int n);
main()
{
int i,n=0;
scanf("%d",&n);
for( i=0;i<n;i++)
printf("%d ", fun ( i ));
}
int fun(int n)
{
if(___1___)
return 0;
else
if(___2___)
return 1;
else
return___3___;
}
答案:
(1)n==0
(2)n==1
(3)fun(n-1)+fun(n-2)
分析:
从题意可以得知本题计算的是斐波纳契数列,斐波纳契数列的计算方法由题目得知该数列中每数等于前面两数之和,如0 1 1 2 3 5 8 13 ……,这样我们可以列出以下计算斐波纳契数列的公式:
fun(0)=0 当n=0
fun(1)=1 当n=1
fun(n)=fun(n-1)+fun(n-2) 当n>1
当n等于0的时候,即计算斐波纳契数列的第一个数字,根据题目知道该数列的第一个数字为0。
当n等于1的时候,即计算斐波纳契数列的第二个数字,根据题目知道该数列的第二个数字为1。
当n等于2的时候,即计算斐波纳契数列的第三个数字,由于该数列中每数等于前面两数之和,所以fun(2)=fun(1)+fun(0)。
当n等于3的时候,即计算斐波纳契数列的第四个数字,由于该数列中每数等于前面两数之和,所以fun(3)=fun(2)+fun(1)。
……
所以当n大于1的时候,fun(n)=fun(n-1)+fun(n-2)。
这里存在函数调用本身的现象,这种现象在程序设计中称为递归。