1576 - 数列1

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

编写一个求斐波那契数列的递归函数,输入值,使用该递归函数,输出如下图形参见样例

题目输入

输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10。

题目输出

对应每个样例输出要求的图形(参见样例格式)。

输入/输出样例

输入格式

1
6

输出格式

          0
        0 1 1
      0 1 1 2 3
    0 1 1 2 3 5 8
  0 1 1 2 3 5 8 13 21
0 1 1 2 3 5 8 13 21 34 55

C语言解答

#include <stdio.h>
void turn(int a[],int n)
{
	int x,i,j,k;
	scanf("%d",&x);
	a[0]=0;a[1]=1;
	for(i=2;i<20;i++)
		a[i]=a[i-1]+a[i-2];
	for(i=0;i<x;i++)
	{
		for(j=0;j<2*(x-i-1);j++)
			printf(" ");
		for(k=0;k<=2*i-1;k++)
			printf("%d ",a[k]);
		printf("%d\n",a[k]);
	}
}
int main()
{
	int n,a[20],i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
  		turn(a,n);
	return 0;
}

C++解答

#include <iostream>
#include <cstdio>
using namespace std;

int fun(int n)
{
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else
        return fun(n-1)+fun(n-2);
}

int main()
{
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int n, t;
    cin >> t;
    while (t--) {
        cin>>n;
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<(2*n)-(2*i+2); j++)
                cout<<" ";
            for(int k=0; k<2*i; k++)
                cout<<fun(k)<<" ";
            cout<<fun(2*i)<<endl;
        }
    }
    return 0;
}

Java解答

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User: Worshiper
 * Date: 13-11-2
 * Time: 下午10:17
 */
public class Main {
    static int[] f = new int[]{0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584};

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();

        for (int i = 0; i < m; i++) {
            int n = in.nextInt();
            for (int j = n; j >= 1; j--) {
                System.out.print(getSpace((j - 1) * 2));
                for (int k = 0; k <= 2 * (n - j); k++) {
                    if (k == 0) {
                        System.out.print(f[k]);
                        continue;
                    }

                    System.out.print(" " + f[k]);
                }

                System.out.println();
            }
        }
    }

    private static String getSpace(int j) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < j; i++) {
            sb.append(" ");
        }
        return sb.toString();
    }
}