用C语言编程 斐波那契数列:1,1,2,3,5,8,13…,输出前13项,每行输出5个数。
public class FeiBoMethod {
// 使用递归方法
private static int getSum(int num) {
if (num== 1 || num== 2)
return 1;
else
return getSum(num- 1) + getFibo(num- 2);
}
public static void main(String[] args) {
System.out.println("斐波那契数列的前13项为:");
for (int i = 1; i <= 13; i++) {
System.out.print(getSum(i) + "\t");
if (i % 5 == 0)
System.out.println();
}
}
}
扩展资料:
使用数组的方式实现
publicclassFeiBoMethod{
//定义数组方法
publicstaticvoidmain(String[]args){
intarr[]=newint[13];
arr[0]=arr[1]=1;
for(inti=2;i<arr.length;i++){
arr[i]=arr[i-1]+arr[i-2];
}
System.out.println("斐波那契数列的前13项如下所示:");
for(inti=0;i<arr.length;i++){
if(i%5==0)
System.out.println();
System.out.print(arr[i]+"\t");
}
}
}
#include "stdio.h"
#include "math.h"
main()
{
float a[13];
int n,i;
float x,y;
for (n=0;n<13;n++)
{
if (n<3)
{
x=1;y=1;
for(i=0;i<=n;i++)
{
x=x*(1+sqrt(5))/2;
y=y*(1-sqrt(5))/2;
}
a[n]=(1/sqrt(5))*(x-y);
}
else
a[n]=a[n-1]+a[n-2];
}
for(n=0;n<13;n++)
{
printf("%6.0f",a[n]);
if((n+1)%5==0)
printf("\n");
}
getch(); /* win-tc*/
}
#include <stdio.h>
int a[13];
int main()
{
a[0] = a[1] = 1;
for(int i=2;i<13;i++)
a[i] = a[i-1] + a[i-2];
for(int i=0;i<13;i++)
{
printf("%3d ", a[i]);
if((i+1)%5 == 0) printf("\n");
}
printf("\n");
return 0;
}
int fact(int n ){
if(n==1) return 1;
if(n==2) return 2;
return fact(n-1)+fact(n-2);
}
在main方法里打印就行了 每5个字符,打个换行,当然楼上用数组也能实现,不过这种题目就是为了解释迭代方法的,熟悉熟悉迭代是有好处的