首页 > 解决方案 > 将 C 代码转换为 MATLAB 代码?关于帕斯卡三角函数和递归函数

问题描述

有人可以帮助将下面的 C 代码转换为 matlab。我从来没有学过 C,只是 MATLAB 的初学者。下面是代码 - 注意:它不属于我,我是从c 中的 Pascal 三角形中提取的,带有递归函数

#include <stdio.h>

long paskal(int, int);

int main() {
   int n = 0;
   int m = 0;
   int k = 0;
   int s = 0;
   printf ("Enter number of rows:\n");
   scanf("%d", &n);

   for(k = 0; n >= k; k++) {
            for(s = 0; s < n-k; s++) //Add spaces before each row
                    printf(" ");
            for(m = 0; k >= m; m++) {
                    long f = paskal(k, m);
                    printf("%ld ", f);
            }
            printf("\n");
    }
    return 0;
}

long paskal(int n, int i) {
        if(n == i || i == 0)
                return 1;
        else
                return paskal(n-1, i) + paskal(n-1, i-1);
}

这是我的尝试,我已经尝试过,但我也是 MATLAB 的初学者,所以我陷入了困境。总体思路是使用递归函数获得帕斯卡三角形的工作代码。

function [ A ] = getpascal( n )


m = 0;
k = 0; 
s = 0;

for k == 0 && n >= k
    for s= = 0 && s < n-k
        disp( "s")
        for m == 0; k >= m
            f = getpascal(k,m);
        end
    end
    return 0;
    
      
    
end
getpascal(n , i)
if n == 1 || i == 0
    A = 1;
else
    return getpascal(n-1, i) + getpascal(n-1, i-1);
end

标签: cmatlab

解决方案


MATLAB 中的 for 循环是不同的。您可以将 for 循环替换为:

for k=0:n
   for s=0:n-k-1
      for m=0:k
      end
   end
end

推荐阅读