[英]Can someone explain how can i transform for loop to recursion
can someone explan here how can i transform this for loop to recursion.有人可以在这里解释我如何将这个 for 循环转换为递归。 Thank you so much in advance.
非常感谢你。
//FibonacciNumbers_v1
#include <stdio.h>
#define LIMIT 10
main() {
showFibonacciValues();
}
showFibonacciValues() {
int n;
long fn;
long fn1 = 1;
long fn2 = 0;
double q;
for(n = 2; n <= LIMIT; ++n) {
fn = fn1 + fn2;
q = (double) fn / fn1;
fn2 = fn1;
fn1 = fn;
printf("%7ld%19ld%29.16f\n", n, fn, q);
}
}
You can do it this way:你可以这样做:
#include <stdio.h>
int factorial(int n) {
//base case
if(n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int fibbonacci(int n) {
if(n == 0){
return 0;
} else if(n == 1) {
return 1;
} else {
return (fibbonacci(n-1) + fibbonacci(n-2));
}
}
int main() {
int n = 5;
int i;
printf("Factorial of %d: %d\n" , n , factorial(n));
printf("Fibbonacci of %d: " , n);
for(i = 0;i<n;i++) {
printf("%d ",fibbonacci(i));
}
}
For recursive you can write that:对于递归,您可以这样写:
//FibonacciNumbers_v1
#include <stdio.h>
#define LIMIT 10
int main() {
showFibonacciValues(2,0,1,0,0);
return 0;
}
showFibonacciValues(int val, long fn, long fn1,long fn2,double q) {
fn = fn1 + fn2;
q = (double) fn / fn1;
fn2 = fn1;
fn1 = fn;
printf("%7ld%19ld%29.16f\n\n", val, fn,q);
if(val < LIMIT) {
showFibonacciValues(++val,fn,fn1,fn2,q);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.