我被要求这样做:
Please input Number: 4
+-+-+-+
+
+
+-+
+
Total is 5
其他例子“
Please input Number: 5
+-+-+-+-+
+
+
+-+
+
+
+-+-+
+
+
total is 8
虽然这个问题让我感到疯狂。我一直在编码和研究斐波那契如何运作,同时找出模式。
我提出的最佳代码是:
#include <stdio.h>
#include <conio.h>
int fibo(int condition)
{
if(condition <= 2)
{
return printf("+");
}
else
{
printf("+");
printf("-");
printf("\n");
fibo(condition - 2) + fibo(condition - 1);
}
}
int main()
{
int takeNumber;
printf("Please give a number!\n");
scanf("%d",&takeNumber);
fibo(takeNumber);
getch();
}
他对“唯一的递归规则”非常严格
我感到困惑和沮丧,我不知道我是否应该分开“+”,“ - ”和“prinf(”\ n“);”。我已经尝试了它并且出现了堆栈溢出错误。
很难研究这种模式,有人可以帮助我吗?
答案 0 :(得分:2)
#include <stdio.h>
#include <conio.h>
int fibo(int condition)
{
if(condition < 2)
{
printf("+\n");
return 1;
}
else
{
int n0,n1;
printf("+-");
n1 = fibo(condition - 1);
n0 = fibo(condition - 2);
return n0 + n1;
}
}
int main()
{
int takeNumber;
printf("Please input Number: ");
scanf("%d",&takeNumber);
printf("Total is %d\n", fibo(takeNumber));
getch();
}
答案 1 :(得分:0)
我认为你要做的是:
int fibo (int n)
{
printf("%d ", n); // replace this with fancy + printing...
if(n <= 2)
{
return n;
}
else
{
return fibo(n- 2) + fibo(n- 1);
}
}
递归函数就像任何其他函数一样:如果它返回一些东西,它必须对所有情况都这样做。您只在某些条件下返回了一个值,因此您调用了未定义的行为。